import java.sql.*;public class TestSQL{
      public static void main(String args[]){
          try{ 
           Class.forName("com.mysql.jdbc.Driver");//驱动的名称
              Connection c = DriverManager.getConnection("jdbc:mysql://localhost/justin?user=root&password=root");//访问的数据库的帐号密码
              Statement s = c.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
              ResultSet r = s.executeQuery("select name, birDay from justin");//执行SQL语句
              
              r.absolute(2);
              r.updateString("name", "BaoBao");
              r.updateRow();
              
              while(r.next()){              
                  System.out.println(r.getString("name"));//返回的结果
              }
              s.close();  
          }catch(Exception e){
           e.printStackTrace();
           } //捕获异常
     }
} 在Eclipse环境下,运行出错:
com.mysql.jdbc.NotUpdatable: Result Set not updatable.This result set must come from a statement that was created with a result set type of ResultSet.CONCUR_UPDATABLE, the query must select only one table, and must select all primary keys from that table. See the JDBC 2.1 API Specification, section 5.6 for more details.可是我已经在createStatement加了ResultSet.CONCUR_UPDATABLE字段了阿?
我的jar包是:mysql-connector-java-3.0.9-stable-bin.jar

解决方案 »

  1.   

    用lz的连接不行吧。
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/justin?","root","123456");
    //3306端口號,justin 数据库名称 ,root 用户,123456 密码
      

  2.   

    我的版本是5.0.18
    其实我原本的连接没问题,就是加了这行代码出了问题:
                  r.absolute(2);
                  r.updateString("name", "BaoBao");
                  r.updateRow();
    按照楼上的意思我把连接改了:Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/justin?", "user=root", "password=root");
    但出了新问题:Invalid authorization specification,  message from server: "Access denied for user 'user=root'@'localhost' (using password: YES)"但我的密码明明是root阿?怎么会是YES呢?
      

  3.   

    "select name, birDay from justin;"
      

  4.   

    把 r.absolute(2);改为r.absolute(1);试试
      

  5.   

    我记得,MYSQL中可滚动结果集不像Oracle那样用的
      

  6.   

    搞定了。
    第一步:更新连接驱动。
    第二步:建立的数据库表一定要设置一个主键。
    然后就没问题了,哈哈...
    import java.sql.*;public class TestSQL{
          public static void main(String args[]){
              try{ 
                  Class.forName("com.mysql.jdbc.Driver");//驱动的名称
                  Connection c = DriverManager.getConnection("jdbc:mysql://localhost/avril?user=root&password=root");//访问的数据库的帐号密码
                  Statement s = c.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
                  ResultSet r = s.executeQuery("select name, birDay from avril");//执行SQL语句
                                 
                  while(r.next()){             
                      System.out.println( r.getString("name"));//返回的结果
                  }
                  
                  r.absolute(2);
                  r.updateString("name", "Love");
                  r.updateRow();
                                              
                  r = s.executeQuery("select name, birDay from avril");
                  
                  System.out.println("");
                  
                  while(r.next()){             
                      System.out.println( r.getString("name"));//返回的结果
                  }
                  s.close();  
              }catch(Exception e){
                    e.printStackTrace();
               } //捕获异常
         }
    }运行结果:
    Bao
    LaogongBao
    Love