日期:2014-05-20  浏览次数:20877 次

后台程序报列名无效
ps=ct.prepareStatement("select password from Users where uname='"+uname+"'");
后台报password列名无效,我把这条sql语句放到数据库里去查就能执行,但是在服务器上就要报错,为什么啊
create table Users(
id int identity(1,1)primary key,
uname varchar(30),
password varchar(30),
email varchar(30),
zname varchar(30),
roles varchar(20),
describe varchar(50)
)我用的是双向多对多的配置,是不是我的sql语句写错了,在服务器上

------解决方案--------------------
根据你的异常java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]列名 'rpassword' 无效 很明显是你的列名无效。。还有多对多关联 ,, 多表查询的定义是要在另一张表查询自己表没有的数据,而我是数据是在一张表中,另一张表没有涉及到,,根据你上面的sql看不出什么来。。你说你的sql放在数据库里面没问题,放在服务器上就有问题。。这样就说明你的sql没问题,但是你给的异常却是sqlException。。。。我估计你是table与class里面的字段混淆了。。
------解决方案--------------------
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]列名 'rpassword' 无效。
从这句话看出 第一应该是与字段rpassword问题 要看数据库字段是否有rpassword
看楼主这句话:
ps=ct.prepareStatement("select password from Users where uname='"+uname+"'");
也就是说以前楼主查询打错了是rpassword了, 这句代码可以排除使用了Hibernate框架,session并没有prepareStatement()这个方法,主要建议就是看数据库字段和查询语句,还有一个可能就是你的项目是否编译了,如果没有更新的话,还是会报以前的错的