当前位置: 技术问答>java相关
在调试时如何打印出一个完整的SQL语句?
来源: 互联网 发布时间:2017-03-24
本文导语: 1.问题1 我在写sql语句时,用?代替一系列变量,然后用PreparedStatement 中的方法 分别给?对应的变量赋值,我想知道在System.out.println(strSql)时 如何打印出来一个给?赋值后的完整的SQL语句? 2.问题2 用PreparedStatement 和...
1.问题1
我在写sql语句时,用?代替一系列变量,然后用PreparedStatement 中的方法
分别给?对应的变量赋值,我想知道在System.out.println(strSql)时
如何打印出来一个给?赋值后的完整的SQL语句?
2.问题2
用PreparedStatement 和用Statement 有何区别?
实例如下:
PreparedStatement ps=null;
String strSql="";
strSql="insert into jia_purch(hp_bianh,hp_mingc,hp_guig,hp_gouhjg,hp_gouhsl) "
+" values(?,?,?,?,?)";
ps=con.prepareStatement(strSql);
ps.setString(1,purchDO.getHPbianh()) ; //货品编号
ps.setString(2,purchDO.getHPmingc()) ; //货品名称
ps.setString(3,purchDO.getHPguig()) ; //货品规格
ps.setDouble(8,purchDO.getHPgouhjg()); //购货价格
ps.setInt(9,purchDO.getHPgouhsl()); //购货数量
ps.executeUpdate();
在执行上面的语句时,出错了,我想将给变量?赋值后的SQL语句打印出来,
应该如何处理呀?
我在写sql语句时,用?代替一系列变量,然后用PreparedStatement 中的方法
分别给?对应的变量赋值,我想知道在System.out.println(strSql)时
如何打印出来一个给?赋值后的完整的SQL语句?
2.问题2
用PreparedStatement 和用Statement 有何区别?
实例如下:
PreparedStatement ps=null;
String strSql="";
strSql="insert into jia_purch(hp_bianh,hp_mingc,hp_guig,hp_gouhjg,hp_gouhsl) "
+" values(?,?,?,?,?)";
ps=con.prepareStatement(strSql);
ps.setString(1,purchDO.getHPbianh()) ; //货品编号
ps.setString(2,purchDO.getHPmingc()) ; //货品名称
ps.setString(3,purchDO.getHPguig()) ; //货品规格
ps.setDouble(8,purchDO.getHPgouhjg()); //购货价格
ps.setInt(9,purchDO.getHPgouhsl()); //购货数量
ps.executeUpdate();
在执行上面的语句时,出错了,我想将给变量?赋值后的SQL语句打印出来,
应该如何处理呀?
|
PreparedStatemen是Statement的一个子类,Statement不需要传参数,一般的情况下都用此方法。PreparedStatemen必须传sql参数,具有ps.setString(),ps.setInt()等方法,如果同一个sql语句被多次执行时,此方法比较好,但此方法有一个弱点就是你所说的打印不出传过参数后的一个带参数植的sql语句
|
除非不得已,一般不要用prepareStatement,好多书上有教.
|
strSql="insert into jia_purch(hp_bianh,hp_mingc,hp_guig,hp_gouhjg,hp_gouhsl) "
+" values(?,?,?,?,?)";
是打印不出?所代表的值的。
+" values(?,?,?,?,?)";
是打印不出?所代表的值的。