当前位置: 技术问答>java相关
插入数据出错,怎么会这样,进来帮个忙吧!
来源: 互联网 发布时间:2015-05-25
本文导语: 表tblMsg的结构: ID 自动编号 其他字段都是文本类型的(包括自动编号字段,共有5个字段): PreparedStatement pstm=null; pstm=con.prepareStatement("insert into tblMsg values(?,?,?,?)"); pstm.setString(1,this.from); pstm.setString(2,this.to); ...
表tblMsg的结构:
ID 自动编号
其他字段都是文本类型的(包括自动编号字段,共有5个字段):
PreparedStatement pstm=null;
pstm=con.prepareStatement("insert into tblMsg values(?,?,?,?)");
pstm.setString(1,this.from);
pstm.setString(2,this.to);
pstm.setString(3,this.title);
pstm.setString(4,this.content);
pstm.executeUpdate();
报错:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access 驱动程序] 查询值的数目与目标字段中的数目不同。
//----------------------------------------------------------
怎么会这样,不是自动编号的字段值由数据库管理系统自动维护吗?!
ID 自动编号
其他字段都是文本类型的(包括自动编号字段,共有5个字段):
PreparedStatement pstm=null;
pstm=con.prepareStatement("insert into tblMsg values(?,?,?,?)");
pstm.setString(1,this.from);
pstm.setString(2,this.to);
pstm.setString(3,this.title);
pstm.setString(4,this.content);
pstm.executeUpdate();
报错:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access 驱动程序] 查询值的数目与目标字段中的数目不同。
//----------------------------------------------------------
怎么会这样,不是自动编号的字段值由数据库管理系统自动维护吗?!
|
你这个表有5个字段,你只插入了四个,还使用insert into,那基本上要出错,呵呵。因为,有可能,你想的是from,插入过程中,将这个from字段,却插入到id字段了,结果正好有一个字段没有值,所以告诉你查询数目不对。
应该这么写
pstm = con.prepareStatement("insert into tblMsg(From_Col_Name, To_Col_Name, Title_Col_Name, Content_Col_Name) values(?, ?, ?, ?)");
这样,sql就知道该将那个字段插入那个列中了,呵呵,其中,from_col_name代表表中的字段名。
应该这么写
pstm = con.prepareStatement("insert into tblMsg(From_Col_Name, To_Col_Name, Title_Col_Name, Content_Col_Name) values(?, ?, ?, ?)");
这样,sql就知道该将那个字段插入那个列中了,呵呵,其中,from_col_name代表表中的字段名。