高手教我-关于数据库数据的删除(在线等待)

druide 2002-11-23 02:20:35
忙了一上午,怎么也没有搞明白。
我的源程序如下:
<%@ page contentType="text/html; charset=Gb2312" import="java.sql.*"%>
<html>
<head>
<title>删除不用的数据</title>
</head>
<body>
<%
String mystr=request.getParameter("song1");
String mystr1;
if(mystr.equals(""))
{
response.sendRedirect("del1.htm");
}
else
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection("jdbc:odbc:panchang");
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
mystr1="delete * from employee where id = '" + mystr + "'";
stmt.executeUpdate(mystr1);
stmt.close();
conn.close();
%>
<P>您输入的记录已被<font color=red>删除</font></P>
<%
}
%>

</body>
</html>
另外,数据库采用:access
数据源名:panchang
表: employee
其中表中字段:
id 数字
name 文本
gender 文本
age 数字
出错信息如下:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 苃?-pn{?9M
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6106)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:6263)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:2525)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:337)
at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:287)
at _jsp._website._del__jsp._jspService(/website/del.jsp:20)
at com.caucho.jsp.JavaPage.service(JavaPage.java:89)
at com.caucho.jsp.JavaPage.subservice(JavaPage.java:83)
at com.caucho.jsp.Page.service(Page.java:280)
at com.caucho.jsp.QServlet.service(QServlet.java:161)
at com.caucho.server.http.AbstractRequest.service(AbstractRequest.java:452)
at com.caucho.server.http.AbstractRequest.service(AbstractRequest.java:395)
at com.caucho.server.http.PageCache$Entry.service(PageCache.java:256)
at com.caucho.server.http.PageCache.service(PageCache.java:105)
at com.caucho.server.http.VirtualHost.service(VirtualHost.java:406)
at com.caucho.server.http.Request.dispatch(Request.java:211)
at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:307)
at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:257)
at com.caucho.server.TcpConnection.run(TcpConnection.java:139)
at java.lang.Thread.run(Thread.java:536)




...全文
25 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
freefalcon 2002-11-23
  • 打赏
  • 举报
回复
两处错误:
1.delete中不使用*
2.字段类型不一致,id是数字,不要加引号,但如果mystr是String类型的,则需要转换
mystr1="delete from employee where id = " + Integer.parseInt(mystr);
druide 2002-11-23
  • 打赏
  • 举报
回复
多谢指点,我采用itok000的方法,结果没有问题。
可是到我加上if else后,总告诉:else without if
catch without try

天啊,我晕了
weiyidress 2002-11-23
  • 打赏
  • 举报
回复
你创建的state是只读的
itok000 2002-11-23
  • 打赏
  • 举报
回复
将mystr1="delete * from employee where id = '" + mystr + "'";
改成mystr1="delete * from employee where id = " + mystr + ";
因为你的字段id是数字,不是文本类型
druide 2002-11-23
  • 打赏
  • 举报
回复
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 标准表达式中数据类型不匹配。
sunlai 2002-11-23
  • 打赏
  • 举报
回复
你试一下将异常打印出来,看一下是什么问题

try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection("jdbc:odbc:panchang");
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
mystr1="delete * from employee where id = '" + mystr + "'";
stmt.executeUpdate(mystr1);
stmt.close();
conn.close();

}catch (SQLException e){out.print(e);}

81,094

社区成员

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

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