首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

使用JDBC的Statement删除数据报错,该怎么解决

2012-03-02 
使用JDBC的Statement删除数据报错JAVA代码如下:String projectIDrequest.getParameter(projectid)//得

使用JDBC的Statement删除数据报错
JAVA代码如下:
String projectID=request.getParameter("projectid");//得到项目的唯一ID号
Session dbSession=mySessionFactory.getSession();
Transaction tx = dbSession.beginTransaction();
Connection conn=dbSession.connection();//取得Session的JDBC连接
Statement stmtProject=conn.createStatement();

String tmpStr;

try
{
//使用JDBC删除plan_sun_project表中满足条件的记录
tmpStr="delete from PLAN_SUN_PROJECT where PROJECTID="+projectID;
stmtProject.executeUpdate(tmpStr);//在此处出错
tx.commit();
}
catch (Exception e) 

tx.rollback();
System.out.println(e.getMessage()); 
return null;
}

提示的错误是:ORA-00933: SQL 命令未正确结束。请大家帮忙。谢谢

[解决办法]
tmpStr="delete from PLAN_SUN_PROJECT where PROJECTID="+projectID; 

请问你的 PROJECTID 字段是一个int(sqlserver数据库)类型的吗?或者是number(Oracle数据库)类型的吗
如果不是的,请这样写那条语句:
tmpStr="delete from PLAN_SUN_PROJECT where PROJECTID='"+projectID+"'";
[解决办法]

探讨
tmpStr="delete from PLAN_SUN_PROJECT where PROJECTID="+projectID;

请问你的 PROJECTID 字段是一个int(sqlserver数据库)类型的吗?或者是number(Oracle数据库)类型的吗
如果不是的,请这样写那条语句:
tmpStr="delete from PLAN_SUN_PROJECT where PROJECTID='"+projectID+"'";

[解决办法]
写这样的SQL语句最好都改用PreparedStatement,可以避免注入问题,在条件多的时候会比较清楚

PreparedStatement prep = conn.prepareStatement("delete from PLAN_SUN_PROJECT where PROJECTID = ?");
prep.setString(1, projectID); 或者 prep.setInt(1, Integer.parseInt(projectID));
prep.executeUpdate();


这样才是好的习惯

热点排行