频繁出现Invalid column name: 字段名错误,请教

randomm 2004-01-02 02:08:02
我在写一个很简单的Servlet,关于数据库的操作封装在一个类里了。。

不知道为什么我调用操作数据库的语句总是catch到SQLException
显示说Invalid column name: 字段名
但是该字段我绝对有,而且这个出错提示是时出现时不出现,总是正常几句,然后出现一两回,重新刷新又正常,有时又出现。。我头都大了。。

语句肯定没问题,数据库表也没有问题。

请高手指教到底怎么回事
我的数据库是SQL Server 2000,用的微软的JDBC最新的那个驱动。Server是WebLogic 7.04,配置了连接池和数据源

除了Invalid column name外,还经常出现the operation was cancel by request类似的出错提示,也是时好时出现。。我要晕死
...全文
14756 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
randomm 2004-01-05
  • 打赏
  • 举报
回复
UP一下,addBatch解决就结帖
randomm 2004-01-05
  • 打赏
  • 举报
回复
我将语句改为
st=conn.createStatement();
for (int i = 8;i <= 1008;i++) {
sqlstr = "INSERT INTO MONEYmap([ID],[Money]) VALUES("+i+",0)";
st.addBatch(sqlstr);
out.println("号码:"+i+"<br>");
}
st.executeBatch();
但是出现下面的异常,请问什么原因?
com.microsoft.jdbc.base.BaseBatchUpdateException: [Microsoft][SQL
ver for JDBC]The operation was cancelled at the user's request.
zone2000 2004-01-03
  • 打赏
  • 举报
回复
换weblogic自带的sqlserver驱动试试吧
louisqiang 2004-01-03
  • 打赏
  • 举报
回复
注意提交,
weblogic的JDBC是有问题,在7.0中有很多功能不支持。
字段没有发现:1.sql语句有问题。2.字段名与MSSQL的保留字冲突。
gong1 2004-01-03
  • 打赏
  • 举报
回复
String s="insert ....";
s.addBatch("insert ....");


....
^_^
randomm 2004-01-03
  • 打赏
  • 举报
回复
addBatch怎么用?
皮鲁 2004-01-03
  • 打赏
  • 举报
回复
多条语句用addBatch嘛.
你那样效率很低,而且一旦有空闲连接未关闭占用系统内存,实际执行的SQL语句肯定会减少的.
rubber365 2004-01-03
  • 打赏
  • 举报
回复
连接池的问题
randomm 2004-01-02
  • 打赏
  • 举报
回复
对了,我操作数据库是用sa,建库的时候就是登陆到企业管理器里面建的,身份验证是SQL Server和Windows,这样是同一个用户么?
randomm 2004-01-02
  • 打赏
  • 举报
回复
singnet(wmidea)兄,sqlserver的url怎么加useUnicode和characterEncoding呢,
对应的属性是什么?
sammy791010 2004-01-02
  • 打赏
  • 举报
回复
怪异!
singnet 2004-01-02
  • 打赏
  • 举报
回复
我以前遇到这种情况,其实表的字段也是存在的,你再重建N次表还会出现这种情况。

个人认为应该是连接数据库的问题,在连接的后面加上编码

jdbc:mysql://localhost/job?useUnicode=true&characterEncoding=GB2312

记得加上后面的?useUnicode=true&characterEncoding=GB2312

另外一种可能就是操作数据库的用户和建数据库的用户不是同一个用户,那样直接修改表文件的属性就行了
randomm 2004-01-02
  • 打赏
  • 举报
回复
怎么说呢。。SQL语句肯定没问题啊,很多时候都能成功执行怎么解释啊。。

主要是时不时的会出来Invalid column name。一条正确的执行语句我在网页中不停刷新应该会一直都正确执行的吧?
另外还有the operation was cancelled at the user's request.是什么意思?
你敢扫一扫吗 2004-01-02
  • 打赏
  • 举报
回复
你可以把执行的SQL在日志里打出来,然后用pb执行一下,看看有没有问题,光凭眼睛看是不行
gdx 2004-01-02
  • 打赏
  • 举报
回复
楼主用的是什么JDBC驱动啊.据说MS的SQL有bug,可以找个其他的,或者使用Weblogic中自带的驱动试试
randomm 2004-01-02
  • 打赏
  • 举报
回复
还有一个问题,我用下面的语句更新一个数据库表,运行完后,查询会发现中间漏了一些值,也就是说不是1000条记录,而是只有900多条,会漏掉相当多,也不知道什么原因,请高手告知。
for (int i = 8;i <= 1008;i++) {
sqlstr = "INSERT INTO MONEYmap(ID,Money) VALUES("+i+",0)";
db.doUpdateQuery(conn,st,sqlstr);
out.println("号码:"+i+"<br>");
}
randomm 2004-01-02
  • 打赏
  • 举报
回复
SQL语句没错,我都是打印在控制台的。。
直接用SQL Server的查询分析器一点问题没有

主要是有时可以,有时不行,完全相同的一条执行语句,我多刷新几次就会不一样。
有几次成功更改数据库,有几次就会出现异常,频率还挺高。

重起weblogic一样
ladofwind 2004-01-02
  • 打赏
  • 举报
回复
同意楼上先打印出sql语句,
然后copy出来在数据库里查看能不能通过,
通过后说明sql语句没问题,
下来查别的
web_spider 2004-01-02
  • 打赏
  • 举报
回复
在执行前,先把sql打印出来,就可以一目了然了
truezerg 2004-01-02
  • 打赏
  • 举报
回复
除了在SQL语句中查询了表中不存在的列外,还有可能是你的SQL语句写的有问题,造成提示这个信息.有时候提示信息不是很准的. 但一定是你的SQL语句的问题
加载更多回复(2)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧