Wednesday, 15 September 2010

sql server - MSSQL - Invalid column name with Java/JTDS -



sql server - MSSQL - Invalid column name with Java/JTDS -

i have read threads problem , of them finish without solution... anyway hope luckier...

i'm trying utilize jdbc connect mssql db. used driver microsoft sqljdbc4.jar , had no problem. since have switch jtds (i'm using 1.2.8) got exception when seek run same sql string:

java.sql.sqlexception: invalid column name 'id'. @ net.sourceforge.jtds.jdbc.sqldiagnostic.adddiagnostic(sqldiagnostic.java:372) @ net.sourceforge.jtds.jdbc.tdscore.tdserrortoken(tdscore.java:2894) @ net.sourceforge.jtds.jdbc.tdscore.nexttoken(tdscore.java:2334) @ net.sourceforge.jtds.jdbc.tdscore.getmoreresults(tdscore.java:643) @ net.sourceforge.jtds.jdbc.jtdsstatement.executesqlquery(jtdsstatement.java:506) @ net.sourceforge.jtds.jdbc.jtdsstatement.executequery(jtdsstatement.java:1433)

the string

select tabledatastoreitem.name, tabledatastoreitem.path tabledatastoreitem, store, service, serviceprovider tabledatastoreitem.store_id = store.id , store.service_store_id = service.id , service.serviceprovider_id = serviceprovider.id , serviceprovider.name = 'systemiservice' , store.createdttm < convert(varchar(100), dateadd(mi, -7, getdate()));

any idea?

from can see in statement, there 3 possibilities.

store.id service.id serviceprovider.id

debug removing portions of statement, or executing in command line, until figure out reference .id causing issue. highly suggest using naming such as

store.store_id service.service_id serviceprovider.serviceprovider_id

it makes debugging , readability lot easier in future.

edit:

try using next statement. same yours (from can tell), uses joins instead of crosses. create debugging bit easier.

select tabledatastoreitem.name, tabledatastoreitem.path tabledatastoreitem bring together store on store.id=tabledatastoreitem.store_id bring together service on service.id = store.service_store_id bring together serviceprovider on service.serviceprovider_id = serviceprovider.id serviceprovider.name = 'systemiservice' , store.createdttm < convert(varchar(100), dateadd(mi, -7, getdate()));

java sql-server jdbc jtds

No comments:

Post a Comment