哎呀,碰到这种问题头都大了啊,搞了一上午,都不知道错哪了。可程序一运行到rs.moveToInsertRow();就出现异常,不能望下了。查了JDK文挡,文挡里的事例程序和我这不就同个意思啊,我我这就是测试不成功啊。求高手指教:数据库及表的创建:create database updateTest;create table test(id varchar(200) ,name varchar(200) ,content varchar(200));程序:import java.sql.*;
public class Test{

public static void main(String[] arg){
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
String sql="select id,name,content from test"; try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
}catch(Exception e)
{
System.out.println("forName erro");
}
///////
try{
con=DriverManager.getConnection("jdbc:mysql://localhost/updateTest","root","820418");
System.out.println("forName & getConnection ok");
}catch(Exception e)
{
System.out.println("DriverManager.getConnection erro");
}
////////
try{
stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
System.out.println("createStatement ok");
rs=stmt.executeQuery(sql);
System.out.println("executeQuery ok");
}
catch(Exception e){
System.out.println("sqlQuery erro");
}
//////
try{
if(rs.next())
{}
else{
rs.moveToInsertRow();
System.out.println("moveToInsertRow");
rs.updateString(1,"t");
System.out.println("updateString 1 ");
rs.updateString(2,"pic");
System.out.println("updateString 2 ");
rs.updateString(3,"aaa");
System.out.println("updateString 3 ");
rs.insertRow();
System.out.println("updateString 1 ");
rs.moveToCurrentRow();
System.out.println("update ok");
}
}catch(Exception e)
{
System.out.println("update erro in sqlQuery");
}
try{
rs.close();
stmt.close();
con.close();
System.out.println("close ok");
}catch(Exception e){
System.out.println("close erro");
}


}
程序运行结果:
forName & getConnection ok
createStatement ok
executeQuery ok
update erro in sqlQuery //问题就出这了
close ok
Press any key to continue...
结果里 update erro in sqlQuery //问题就出这了,也就是说程序一运行到rs.moveToInsertRow();就出现异常,不能望下了求高手门帮忙分析下啊。

解决方案 »

  1.   

    catch(Exception e)
    {
    System.out.println("update erro in sqlQuery");
    e.printStackTrace();
    }看看什么异常,mysql是否支持该方式
      

  2.   

    问题已经解决。
    谢谢  kevinliuu(@。@)  提示
      

  3.   

    问题原因总结:
    1,select * from test 中 不能为‘*’,如果为‘*’号,则JDBC默认为表只读,原因:尚不知道
    2,低级错误,rs.moveToInsertRow();操作需要包含表中所有的主键,可能是为了防止结果集更新表时候,主键的丢失