数据库UPDATE操作问题

jn0115 2007-06-13 12:31:25
import java.io.*;
import java.sql.*;
public class Demo {
public static void main(String[] args) {

String driver="sun.jdbc.odbc.JdbcOdbcDriver";
String source="jdbc:odbc:Grade";
try{
Class.forName(driver);
}catch(ClassNotFoundException exc){
System.out.print("没有发现驱动\n");
exc.printStackTrace();
System.exit(1);
}
try{
Connection con=DriverManager.getConnection(source);
SQLWarning warn=con.getWarnings();
while(warn!=null){
System.out.println(warn.getMessage());
warn=warn.getNextWarning();
}
String sql="SELECT * FROM Student WHERE num=?";
PreparedStatement pStm=con.prepareStatement(sql);
pStm.setInt(1, 104021000);
ResultSet rs=pStm.executeQuery();
while(rs.next())
System.out.println(rs.getString("name"));
String sql1="UPDATE Student SET name=Jimmy WHERE num=104021000";
Statement stm=con.createStatement();
stm.executeQuery(sql1);
}catch(SQLException exc){
System.out.println("在执行数据库时发生错误");
exc.printStackTrace();
}
}

}
==============================================================


程序如上,一个查询操作,一个更新操作,查询结果正确,更新出现异常

Eclispse控制台输出为:

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 参数不足,期待是 1。
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(Unknown Source)
at Demo.main(Demo.java:64)
林文龙
在执行数据库时发生错误
=======================================================
这是什么意识啊,什么 参数不足,期待是 1啊

这里 String sql1="UPDATE Student SET name=Jimmy WHERE num=104021000";
Statement stm=con.createStatement();
stm.executeQuery(sql1);
看不出什么错误啊,
还有那个Unknown Source是不是数据源啊,数据源已经设置了啊,查询都正确的

?????????????????????

...全文
367 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
li_d_s 2007-06-13
  • 打赏
  • 举报
回复
String sql1="UPDATE Student SET name=Jimmy WHERE num=104021000";

==>

String sql1="UPDATE Student SET name='Jimmy' WHERE num=104021000";
jn0115 2007-06-13
  • 打赏
  • 举报
回复
谢谢各位,已经解决
tommy___2005 2007-06-13
  • 打赏
  • 举报
回复
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.SQLWarning;
import java.sql.Statement;

public class Demo {
public static void main(String[] args) {

String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String source = "jdbc:odbc:Grade";
try {
Class.forName(driver);
} catch (ClassNotFoundException exc) {
System.out.print("没有发现驱动\n");
exc.printStackTrace();
System.exit(1);
}
try {
Connection con = DriverManager.getConnection(source);
SQLWarning warn = con.getWarnings();
while (warn != null) {
System.out.println("warning:"+warn.getMessage());
warn = warn.getNextWarning();
}
String sql = "SELECT * FROM Student WHERE num=?";
PreparedStatement pStm = con.prepareStatement(sql);
pStm.setInt(1, 104021000);
ResultSet rs = pStm.executeQuery();
while (rs.next())
System.out.println(rs.getString("name"));
String sql2 = "UPDATE Student SET name='Jimmy' WHERE num=104021000";
Statement stm = con.createStatement();
stm.executeUpdate(sql2);
stm = con.createStatement();
rs = stm.executeQuery("SELECT * FROM Student WHERE num=104021000");
while (rs.next())
System.out.println(rs.getString("name"));
rs.close();
con.close();
} catch (SQLException exc) {
System.out.println("在执行数据库时发生错误");
exc.printStackTrace();
}
}

}

result in console:
Jimmy
Jimmy

no problem
likgui 2007-06-13
  • 打赏
  • 举报
回复
关注
jn0115 2007-06-13
  • 打赏
  • 举报
回复
谢谢楼上的,No ResultSet was produced问题解决,现在虽然程序没问题了
但是UPDATE Student SET name='Jimmy' WHERE num=104021000这句执行后,Student表里的name里的内容根本没变,上面用104021000找到的是“林文龙”,UPDATE后数据库里还是“林文龙”
难道UPDATE Student SET name='Jimmy' WHERE num=104021000这句有错吗,我怎么都看不出来
我用的是Access 没sql Server没发用查询分析器看,但那句怎么看都没错啊
li_d_s 2007-06-13
  • 打赏
  • 举报
回复
update语句应该用executeUpdate或者execute来执行,你用了executeQuery,这个方法是要返回一个结果集的,但是update的结果没有返回结果集,所以有这个问题,改成executeUpdate就好了
jn0115 2007-06-13
  • 打赏
  • 举报
回复
String sql1="UPDATE Student SET name=Jimmy WHERE num=104021000";

==>

String sql1="UPDATE Student SET name='Jimmy' WHERE num=104021000";
===========================================================================
改成这样后:
林文龙
在执行数据库时发生错误
java.sql.SQLException: No ResultSet was produced
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(Unknown Source)
at Demo.main(Demo.java:64)
=================================================================
???

我在UPDATE Student SET name='Jimmy' WHERE num=104021000这句sql语句不会错啊
joejoe1991 2007-06-13
  • 打赏
  • 举报
回复
建议先把sql语句在查询分析器里写好 再往java里写 不然出错了可不好找

62,614

社区成员

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

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