who can tell me why?

long9299 2009-03-22 12:36:11
程序执行后老是抛出“列名错误”,调试了很长时间还这样!真是郁闷死了!请各位大侠帮小弟解决一下!谢了!

import java.sql.*;
import javax.sql.rowset.*;

public class TestRowSet {

public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
CachedRowSet rowset = new com.sun.rowset.CachedRowSetImpl();

rowset.setUrl("jdbc:mysql://localhost:3306/storedb");
rowset.setUsername("root");
rowset.setPassword("123");
rowset.setCommand("select name,age,address from customers;");
rowset.execute(); //execute()方法负责建立数据库连接,执行查询语句,填充行集,然后关闭数据库连接


rowset.setTableName("customers");//行集的查询结果来自于ResultSet,需显式设置待查询表的表名
rowset.moveToInsertRow();
rowset.updateString("name","xiaohuang");
rowset.updateInt(2,34);
rowset.updateString(3,"jiangsu");
rowset.insertRow();
rowset.moveToCurrentRow();
rowset.acceptChanges();
}
}

customers:
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| ID | bigint(20) | NO | PRI | NULL | auto_increment |
| name | varchar(16) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
| address | varchar(255) | YES | | NULL | |
+---------+--------------+------+-----+---------+----------------+

java.sql.SQLException: 列名无效
at com.sun.rowset.CachedRowSetImpl.getColIdxByName(CachedRowSetImpl.java:1601)
at com.sun.rowset.CachedRowSetImpl.getObject(CachedRowSetImpl.java:2985)
at com.sun.rowset.internal.CachedRowSetWriter.insertNewRow(CachedRowSetWriter.java:766)
at com.sun.rowset.internal.CachedRowSetWriter.writeData(CachedRowSetWriter.java:313)
at com.sun.rowset.CachedRowSetImpl.acceptChanges(CachedRowSetImpl.java:831)
at TestRowSet.main(TestRowSet.java:35)
Exception in thread "main" javax.sql.rowset.spi.SyncProviderException: 列名无效
at com.sun.rowset.CachedRowSetImpl.acceptChanges(CachedRowSetImpl.java:858)
at TestRowSet.main(TestRowSet.java:35)
...全文
243 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovezx1028 2009-03-23
  • 打赏
  • 举报
回复
你检查一下 字段名有没有跟mySql里面的字段有没有冲突。。。
lakesea 2009-03-23
  • 打赏
  • 举报
回复
我觉得就是分号的问题,如果你分号是合法的,那就意味着setCommand后面可以连续跟几个用分号分割的sql语句了,
至少分号去掉是不会有错的,你试过了?
heavilyarmed 2009-03-23
  • 打赏
  • 举报
回复
rowset.setCommand("select name,age,address from customers;");
把name换成[name]
";"没有问题
daisycool 2009-03-23
  • 打赏
  • 举报
回复
把这个: rowset.updateString("name","xiaohuang"); 换成 rowset.updateString(1,"xiaohuang"); 试试。
csgdseed 2009-03-23
  • 打赏
  • 举报
回复
直接用mysql命令行试试这条sql语句,应该是列名写错或用了关键字
long9299 2009-03-23
  • 打赏
  • 举报
回复
试过了哎
luoyanqun 2009-03-23
  • 打赏
  • 举报
回复
在学习中,貌似楼上3楼说的,是那问题导致!
susoft2008 2009-03-22
  • 打赏
  • 举报
回复
你核对一下 你数据库表的列名 跟你获取数据传入的列名是否一致,推荐都用大写
long9299 2009-03-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 SuperTyro 的回复:]
at TestRowSet.main(TestRowSet.java:35)


第35行有问题 LZ检查下吧
[/Quote]

第35行是rowset.acceptChanges();
long9299 2009-03-22
  • 打赏
  • 举报
回复
哥们,说的具体点行不
huxhuxx 2009-03-22
  • 打赏
  • 举报
回复
关注
long9299 2009-03-22
  • 打赏
  • 举报
回复
分号没问题的
ouyangxiaokang6 2009-03-22
  • 打赏
  • 举报
回复
首先确认你的sql写的列名和数据库是不是一直,是不是你写的列名数据库是不是存在.
如果不是看看是不是4,5楼说的情况
ouyangxiaokang6 2009-03-22
  • 打赏
  • 举报
回复
首先确认你的sql写的列名和数据库是不是一直,是不是你写的列名数据库是不是存在.
如果不是看看是不是4,5楼说的情况
acai9527 2009-03-22
  • 打赏
  • 举报
回复
mark
jumpheightway 2009-03-22
  • 打赏
  • 举报
回复
楼主的预编译语句学会再用行不
都不符合语法规则
当然要报错
SuperTyro 2009-03-22
  • 打赏
  • 举报
回复
at TestRowSet.main(TestRowSet.java:35)


第35行有问题 LZ检查下吧
yjw3160 2009-03-22
  • 打赏
  • 举报
回复
看35行的那个是否是mysql关键字,如何核实无误的话,同样推荐列名全部大写
jeson168 2009-03-22
  • 打赏
  • 举报
回复
java 学习交流群:34811572
欢迎加入!!!
jyh149129 2009-03-22
  • 打赏
  • 举报
回复
1、检查下是否用到了mysql的保留字
2、如果服务器系统用的是linux,需要修改一个参数,让mysql不区列分列名的大小写
加载更多回复(3)

81,094

社区成员

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

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