jsp数据库删除记录的问题
我用的好似TOMCAT服务器,数据库是accesstPRODUCTID,tID是数据库中表TORDER的数据段,tPRODUCTID在access中的数据类型是数字,tI...
我用的好似TOMCAT服务器,数据库是access
tPRODUCTID,tID是数据库中表TORDER的数据段,tPRODUCTID在access中的数据类型是数字,tID的类型是文本,rsdeleteorder__tproductid,rsdeleteorder__tusername都是String类型的变量,现在我想做一个删除记录的功能,于是用dreamweaver帮我生成了下面的一段数据库删除代码,但是出现错误提示:无效SQL类型
代码如下:
Driver Driverrsdeleteorder = (Driver)Class.forName(MM_connTiaozao_DRIVER).newInstance();
Connection Connrsdeleteorder = DriverManager.getConnection(MM_connTiaozao_STRING,MM_connTiaozao_USERNAME,MM_connTiaozao_PASSWORD);
PreparedStatement rsdeleteorder = Connrsdeleteorder.prepareStatement("DELETE FROM TORDER WHERE tPRODUCTID=? AND tID=? ");
rsdeleteorder.setObject(1, rsdeleteorder__tproductid);
rsdeleteorder.setObject(2, rsdeleteorder__tusername);
rsdeleteorder.executeUpdate();
请问一下哪里出了问题?
我可不可以像下面这样写查询语句:
DELETE FROM TORDER
WHERE tPRODUCTID=tproductid AND tID=tusername
其中tproductid,tusername 都是字符串变量 展开
tPRODUCTID,tID是数据库中表TORDER的数据段,tPRODUCTID在access中的数据类型是数字,tID的类型是文本,rsdeleteorder__tproductid,rsdeleteorder__tusername都是String类型的变量,现在我想做一个删除记录的功能,于是用dreamweaver帮我生成了下面的一段数据库删除代码,但是出现错误提示:无效SQL类型
代码如下:
Driver Driverrsdeleteorder = (Driver)Class.forName(MM_connTiaozao_DRIVER).newInstance();
Connection Connrsdeleteorder = DriverManager.getConnection(MM_connTiaozao_STRING,MM_connTiaozao_USERNAME,MM_connTiaozao_PASSWORD);
PreparedStatement rsdeleteorder = Connrsdeleteorder.prepareStatement("DELETE FROM TORDER WHERE tPRODUCTID=? AND tID=? ");
rsdeleteorder.setObject(1, rsdeleteorder__tproductid);
rsdeleteorder.setObject(2, rsdeleteorder__tusername);
rsdeleteorder.executeUpdate();
请问一下哪里出了问题?
我可不可以像下面这样写查询语句:
DELETE FROM TORDER
WHERE tPRODUCTID=tproductid AND tID=tusername
其中tproductid,tusername 都是字符串变量 展开
5个回答
展开全部
出现参数不足,期待值为1的错误提示,原因一般是出现在sql语句里。
首先我得确定一下你的表名是不是user,如果是的话,查看一下表中有没有username,userpw,userpword,Email,Tel,Handset,Fax,Address的字段,如果都为是的话就不可能是sql错误!
接下来的方法是检查你的sql语句是不是正确的方法:
打开数据库,点击左边的查询,在打开的对话框中选择关闭,之后只剩下一个查询窗口(灰色),之后在查询窗口里点击右键,粘贴到里面并覆盖掉里面的内容,点击上方的红色勾,你语句的正确与否就知道了。
试试吧,还是不行的话再问!注意:如果是数字型(整型)的就不要单引号,文本型就用单引号,这个很重要啊!
回答者: opook - 秀才 二级 10-26 15:44
name和name2有区别吧,你参数用的是name2,但sql语句又是name
name在数据库内存的是varchar
则
delete from 模式名.表名 where 字段='值'
如果是int的话就可以不用''号了,你用天星海沙连接数据库执行sql语句试试?
还有就是可能你数据库内没这个字段
上面的代码是连接数据库,不说了...
看下面的数据库操作
PreparedStatement pstmt = Connrsdeleteorder.prepareStatement("DELETE FROM TORDER WHERE tPRODUCTID=? AND tID=? ");
pstmt.set(1, tproductid);
pstmt.set(2, tusername);
pstmt.executeUpdate();
PrepareStatement 是Statement的子类,为了防止SQL注入时采用的,一般推荐使用PrepareStatement
pstmt.set(1,....) 1代表你上面写的SQL语句出现的第一个问号, ....代表你要将第一个问号用什么代替
比如你说
tproductid tusername 都是字符串变量,那你可以这样写
pstmt.set(1,tproductid);
pstmt.set(2,tusername);
然后上面的SQL语句就会成为
DELETE FROM TORDER WHERE tPRODUCTID='tproductid' AND tID='tusername '; 去执行了!
首先我得确定一下你的表名是不是user,如果是的话,查看一下表中有没有username,userpw,userpword,Email,Tel,Handset,Fax,Address的字段,如果都为是的话就不可能是sql错误!
接下来的方法是检查你的sql语句是不是正确的方法:
打开数据库,点击左边的查询,在打开的对话框中选择关闭,之后只剩下一个查询窗口(灰色),之后在查询窗口里点击右键,粘贴到里面并覆盖掉里面的内容,点击上方的红色勾,你语句的正确与否就知道了。
试试吧,还是不行的话再问!注意:如果是数字型(整型)的就不要单引号,文本型就用单引号,这个很重要啊!
回答者: opook - 秀才 二级 10-26 15:44
name和name2有区别吧,你参数用的是name2,但sql语句又是name
name在数据库内存的是varchar
则
delete from 模式名.表名 where 字段='值'
如果是int的话就可以不用''号了,你用天星海沙连接数据库执行sql语句试试?
还有就是可能你数据库内没这个字段
上面的代码是连接数据库,不说了...
看下面的数据库操作
PreparedStatement pstmt = Connrsdeleteorder.prepareStatement("DELETE FROM TORDER WHERE tPRODUCTID=? AND tID=? ");
pstmt.set(1, tproductid);
pstmt.set(2, tusername);
pstmt.executeUpdate();
PrepareStatement 是Statement的子类,为了防止SQL注入时采用的,一般推荐使用PrepareStatement
pstmt.set(1,....) 1代表你上面写的SQL语句出现的第一个问号, ....代表你要将第一个问号用什么代替
比如你说
tproductid tusername 都是字符串变量,那你可以这样写
pstmt.set(1,tproductid);
pstmt.set(2,tusername);
然后上面的SQL语句就会成为
DELETE FROM TORDER WHERE tPRODUCTID='tproductid' AND tID='tusername '; 去执行了!
展开全部
上面的代码是连接数据库,不说了...
看下面的数据库操作
PreparedStatement pstmt = Connrsdeleteorder.prepareStatement("DELETE FROM TORDER WHERE tPRODUCTID=? AND tID=? ");
pstmt.set(1, tproductid);
pstmt.set(2, tusername);
pstmt.executeUpdate();
PrepareStatement 是Statement的子类,为了防止SQL注入时采用的,一般推荐使用PrepareStatement
pstmt.set(1,....) 1代表你上面写的SQL语句出现的第一个问号, ....代表你要将第一个问号用什么代替
比如你说
tproductid tusername 都是字符串变量,那你可以这样写
pstmt.set(1,tproductid);
pstmt.set(2,tusername);
然后上面的SQL语句就会成为
DELETE FROM TORDER WHERE tPRODUCTID='tproductid' AND tID='tusername '; 去执行了!
看下面的数据库操作
PreparedStatement pstmt = Connrsdeleteorder.prepareStatement("DELETE FROM TORDER WHERE tPRODUCTID=? AND tID=? ");
pstmt.set(1, tproductid);
pstmt.set(2, tusername);
pstmt.executeUpdate();
PrepareStatement 是Statement的子类,为了防止SQL注入时采用的,一般推荐使用PrepareStatement
pstmt.set(1,....) 1代表你上面写的SQL语句出现的第一个问号, ....代表你要将第一个问号用什么代替
比如你说
tproductid tusername 都是字符串变量,那你可以这样写
pstmt.set(1,tproductid);
pstmt.set(2,tusername);
然后上面的SQL语句就会成为
DELETE FROM TORDER WHERE tPRODUCTID='tproductid' AND tID='tusername '; 去执行了!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
"DELETE FROM TORDER
WHERE tPRODUCTID=tproductid AND tID=tusername "
可以改为:
"DELETE FROM TORDER
WHERE tPRODUCTID='+"tproductid+"' AND tID='+"tusername+' "
如果你程序没问题 可以试试下面的这种写法
WHERE tPRODUCTID=tproductid AND tID=tusername "
可以改为:
"DELETE FROM TORDER
WHERE tPRODUCTID='+"tproductid+"' AND tID='+"tusername+' "
如果你程序没问题 可以试试下面的这种写法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把
rsdeleteorder.setObject(1, rsdeleteorder__tproductid);
rsdeleteorder.setObject(2, rsdeleteorder__tusername);
改成
rsdeleteorder.set(1, rsdeleteorder__tproductid);
rsdeleteorder.set(2, rsdeleteorder__tusername);
试试。
rsdeleteorder.setObject(1, rsdeleteorder__tproductid);
rsdeleteorder.setObject(2, rsdeleteorder__tusername);
改成
rsdeleteorder.set(1, rsdeleteorder__tproductid);
rsdeleteorder.set(2, rsdeleteorder__tusername);
试试。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
大哥你问什么啊 !!
delete 是删除啊!
delete 是删除啊!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询