关于prepareStatement中的参数(50分)

  • 主题发起人 主题发起人 蓝色虾
  • 开始时间 开始时间

蓝色虾

Unregistered / Unconfirmed
GUEST, unregistred user!
我用jdbc-odbc联接access数据库
代码如下:
pstmt = con.prepareStatement(sql);
pstmt = con.prepareStatement("update news set"
+" subject=?,"
+" body=?,"
+" isonindex=?,"
+" office=?"
+" where newID=?");
pstmt.setString(1, news.getSubject());
pstmt.setString(2, news.getBody());
pstmt.setInt(3, news.getIsonindex());
pstmt.setString(4, news.getOffice());
pstmt.setString(5, news.getNewsID());
//---------------------------------
pstmt.executeUpdate();

执行这段代码,odbc报错,说参数应该为6个(该表中确实有六栏),难道非要全部更新才行吗?
我改换以下代码却得以通过:
String sql="update news set subject='"+news.getSubject()+"',body='"+news.getBody()+"',isonindex="+news.getIsonindex()+",office='"+news.getOffice()+"' where newsID='"+news.getNewsID()+"'";
pstmt = con.prepareStatement(sql);
pstmt.executeUpdate();
这里只更新了五栏数据,却能够通过
请问这是为何?我该怎么做才能依靠设置参数更新五栏数据?
 
看起来像是JDBC-ODBC驱动搞的鬼。试一下换一个其它的JDBC driver.
比如http://www.infozoom.de/NS/javaado.html
你也可以在sun找到其他的jdbc driver for access:
http://industry.java.sun.com/products/jdbc/drivers
 
我真是粗心
大家注意看newID少了个s,因该是newsID
还是谢谢曹晓钢
 
我也是粗心.... //shy...不过,如果是少了一个s,应该是报字段找不到呀,不应该报参数数目不匹配。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部