使用JDBC的Statement删除数据报错

eHuaTian 2009-05-10 09:55:02
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 命令未正确结束。请大家帮忙。谢谢
...全文
237 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
haolisdk1 2009-05-14
  • 打赏
  • 举报
回复
同意1楼和6楼的说法!lz好好看看!应该问题不大!很快就能解决!
qsrock 2009-05-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ChDw 的回复:]
写这样的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();


这样才是好的习惯
[/Quote]
顶!
ChDw 2009-05-12
  • 打赏
  • 举报
回复
写这样的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();


这样才是好的习惯
fengsky491 2009-05-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 New_Mao_Er 的回复:]
tmpStr="delete from PLAN_SUN_PROJECT where PROJECTID="+projectID;

请问你的 PROJECTID 字段是一个int(sqlserver数据库)类型的吗?或者是number(Oracle数据库)类型的吗
如果不是的,请这样写那条语句:
tmpStr="delete from PLAN_SUN_PROJECT where PROJECTID='"+projectID+"'";
[/Quote]
http://
linwz520 2009-05-12
  • 打赏
  • 举报
回复
同意一楼和三楼
New_Mao_Er 2009-05-10
  • 打赏
  • 举报
回复
tmpStr="delete from PLAN_SUN_PROJECT where PROJECTID="+projectID;

请问你的 PROJECTID 字段是一个int(sqlserver数据库)类型的吗?或者是number(Oracle数据库)类型的吗
如果不是的,请这样写那条语句:
tmpStr="delete from PLAN_SUN_PROJECT where PROJECTID='"+projectID+"'";
YHL27 2009-05-10
  • 打赏
  • 举报
回复
sql语句应该明确是String类型的
jinxfei 2009-05-10
  • 打赏
  • 举报
回复
tmpStr="delete from PLAN_SUN_PROJECT where PROJECTID="+projectID;
System.out.println(tmpStr);
stmtProject.executeUpdate(tmpStr);//在此处出错

加一行,打出Sql,拿到数据库工具中执行,肯定是sql拼的有一些问题.
比较大的可能性是projectID为null,这样你的sql就变成:
delete from PLAN_SUN_PROJECT where PROJECTID=null


PROJECTID这个字段是数字还是字符串?
如果是字符串,记得加引号。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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