请问,JAVA中如何写调用sql server的存储过程代码?

nj_zx999 2009-08-07 03:34:19
如题
本人是新手,写了一段想调用存储过程的代码,总是出错,请高手给予指点 //
strSQL = "insert into b(bh) values(" + bh + ")";
db.execute(strSQL);
这样写就不会出错
如果如下写:
strSQL = "{call putb(?)}";
db.setString(1,bh);
db.execute(strSQL);
就出错

请问正确写法


...全文
145 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nj_zx999 2009-08-08
  • 打赏
  • 举报
回复
谢谢,在诸位帮助下解决了,把结果发布,需要者可以参考
for (int i = 0; i < list.size(); i++) {
conn.setAutoCommit(false);
XmlBean xx= (XmlBean) list.get(i);
String flag = xx.getFlag();
List Alist = xx.getAList();
for (int j = 0; j < Alist .size(); j++) {
XmlBean B= (XmlBean) Alist .get(j);
String CC= B.getB();
int xh = B.getXh();
strSQL = "{call putb(?,?,?)}";
db=conn.prepareCall(strSQL);
db.setString(1,flag);
db.setString(2,CC);
db.setInt(3,xh);
db.execute();
db.close();
}
strSQL = "{call puta(?)}";
db=dbpool.prepareCall(strSQL);
db.setString(1,flag);
db.execute();
db.close();
dbpool.commit();
}
zhouzongjiu 2009-08-07
  • 打赏
  • 举报
回复
你把
prepstmt = conn.prepareStatement(sql);
改成
CallableStatement cs= conn.prepareCall(sql);
就可以了
xiaozejun 2009-08-07
  • 打赏
  • 举报
回复
这个没有研究过 过来向高手学习学习 帮顶
nj_zx999 2009-08-07
  • 打赏
  • 举报
回复
如果是
String bh='123123';
strSQL = "{call putb('"+bh+"')}";
db.execute(strSQL);

就能成功,就是希望能用
strSQL = "{call putb(?)}";
这样的格式,
请指点
to zhouzongjiu
不是的,db 就是建立了一个连接,是
prepstmt = conn.prepareStatement(sql);
FlashDragon 2009-08-07
  • 打赏
  • 举报
回复
String strSQL = "{call putb(?)}"; //如果连接数据库使用的用户,不是putb存储过程所在schema用户的话,需要在putb前面加上schema名
CallableStatement db = null;
db = conn.prepareCall(strSQL);
db.setString(1,bh);
db.execute(strSQL);


zhouzongjiu 2009-08-07
  • 打赏
  • 举报
回复
后面的db CallableStatement类型吗

62,621

社区成员

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

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