java数据库pstmt.executeUpdate();报错

try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConn... try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:pp", "a", "a");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select*from information");
while(rs.next()){
System.out.print(rs.getString("name")+" "+rs.getInt("totalscore"));
}
stmt.close();
con.close();
int totalscore = 10;
String str1 = "a";
PreparedStatement pstmt = con.prepareStatement("UPDATE information SET totalscore=? WHERE name=?");
pstmt.setInt(1, totalscore);
pstmt.setString(2, str1);
pstmt.executeUpdate();
System.out.print(pstmt.executeUpdate());
pstmt.close();
stmt = con.createStatement();
rs = stmt.executeQuery("select*from information");
while(rs.next()){
System.out.print(rs.getString("name")+" "+rs.getInt("totalscore"));
}
stmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
pstmt.executeUpdate();报错
前面正常输出,pstmt.executeUpdate();程序停止,不再向下执行。数据库中内容不变
删除掉第十行的con.close();运行结果也一样。。
报的错:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access ?????] ????????ʹ??һ???ɸ??µIJ?ѯ??
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)
at sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:3148)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(JdbcOdbcPreparedStatement.java:215)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeUpdate(JdbcOdbcPreparedStatement.java:137)
at javaapplication16.JavaApplication16.main(JavaApplication16.java:27)
会不会是Access的问题呀?
展开
 我来答
开源节流小能手juan
2011-10-18 · 超过22用户采纳过TA的回答
知道答主
回答量:94
采纳率:0%
帮助的人:15.6万
展开全部
你在执行完第一个输出语句后,写了这样两句代码 stmt.close(); con.close(); 意思就是你关闭了连接,而后面你还用到了stmt 所以后面要出错。。你把这两句都删就对了 你把前面的关闭资源都删了嘛,全部写到最后。这才是规范写法。
更多追问追答
追问
con.close()是去掉的。
stmt.close();去了还是一样的错误。。
后面那句用到stmt 时,新定义了stmt。
但是根本执行不到那句。就是死在了pstmt.executeUpdate();
我在这句后面直接print,都没有输出
追答
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:pp", "a", "a");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select*from information");
while(rs.next()){
System.out.print(rs.getString("name")+" "+rs.getInt("totalscore"));
}
int totalscore = 10;
String str1 = "a";
PreparedStatement pstmt = con.prepareStatement("UPDATE information SET totalscore=? WHERE name=?");
pstmt.setInt(1, totalscore);
pstmt.setString(2, str1);
rs=pstmt.executeUpdate();
System.out.print(pstmt.executeUpdate());
rs = stmt.executeQuery("select*from information");
while(rs.next()){
System.out.print(rs.getString("name")+" "+rs.getInt("totalscore"));
}
rs.close();
stmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
你这样写 看看。。把我这个直接复制过去看看。。运行下
sunchongkai505
2011-10-18 · TA获得超过1005个赞
知道小有建树答主
回答量:959
采纳率:0%
帮助的人:362万
展开全部

rs.close();
stmt.close();
con.close();
写到finnaly里不行吗?
你的执行顺序有问题,好好看看,关闭了还执行?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zwyphoenix
2011-10-18 · TA获得超过110个赞
知道答主
回答量:84
采纳率:0%
帮助的人:73.3万
展开全部
把这句话去了System.out.print(pstmt.executeUpdate());
更多追问追答
追问
一样的错误。。
追答
不用看了。我知道错哪了。
while(rs.next()){
System.out.print(rs.getString("name")+" "+rs.getInt("totalscore"));
}
stmt.close();
con.close();
con.close()去了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
盟游戏
2011-10-18 · 超过16用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:14.5万
展开全部
把stmt.close();也删掉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式