首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据更新到mysql数据库中的表失败

将数据更新到mysql数据库中的表失败
EN

Stack Overflow用户
提问于 2012-09-28 19:28:52
回答 1查看 654关注 0票数 0

以下代码不显示任何错误,代码执行,但在数据库中未更新计算和存储在rfv中的数据。

代码语言:javascript
复制
try{
  Class.forName("com.mysql.jdbc.Driver").newInstance();
  com.mysql.jdbc.Connection con = (com.mysql.jdbc.Connection)  DriverManager.getConnection("jdbc:mysql://localhost:3308/rk","root","root");
  ResultSet rsfact=null;
  PreparedStatement psfact=(PreparedStatement) con.prepareStatement("SELECT * FROM fact");
  PreparedStatement psgraph=(PreparedStatement) con.prepareStatement("INSERT INTO graph values(?,?,?,?)");
  int cp,ic,rc,fi,ct,tr;
  while(rsfact.next())
  {
      cp=rsfact.getInt("1");
      ic=rsfact.getInt("2");
      rc=rsfact.getInt("3");
      fi=rsfact.getInt("4");
      ct=rsfact.getInt("5");
      tr=rsfact.getInt("6");
      int rfv;

      rfv=(cp+ic+rc+fi+ct+tr)/6;
      graph.setInt(1, rfv);
      graph.executeUpdate();
  }
 }
 catch(Exception e){
 System.out.println(e);
 }

我检查了代码,一切似乎都很好,但我无法找出数据没有插入到表中的原因。执行此操作时,我将得到以下信息

java.lang.NullPointerException

代码语言:javascript
复制
 try{
   Class.forName("com.mysql.jdbc.Driver").newInstance();
    com.mysql.jdbc.Connection con = (com.mysql.jdbc.Connection)        DriverManager.getConnection("jdbc:mysql://localhost:3308/rk","root","root");
   ResultSet rsfact=null;
  ResultSet rsfault=null;
  ResultSet rspriority=null;
  ResultSet rsreq=null;
  PreparedStatement psfact=(PreparedStatement) con.prepareStatement("SELECT * FROM fact");
  PreparedStatement psfault=(PreparedStatement) con.prepareStatement("SELECT * FROM fault");
  PreparedStatement pspriority=(PreparedStatement) con.prepareStatement("SELECT * FROM priority");
  PreparedStatement psreq=(PreparedStatement) con.prepareStatement("SELECT * FROM req");
  PreparedStatement graph=(PreparedStatement) con.prepareStatement("INSERT INTO gr values(?)");
  int cp,ic,rc,fi,ct,tr;
  rsfact = psfact.executeQuery();
  rsfault=psfault.executeQuery();
  rspriority=pspriority.executeQuery();
  rsreq=psreq.executeQuery();
  while(rsfact.next())
  {
      cp=rsfact.getInt(1);
      ic=rsfact.getInt(2);
      rc=rsfact.getInt(3);
      fi=rsfact.getInt(4);
      ct=rsfact.getInt(5);
      tr=rsfact.getInt(6);
      int rfv;

      rfv=(cp+ic+rc+fi+ct+tr)/6;
      graph.setInt(1, rfv);
      graph.executeUpdate();
  }
  while(rsfault.next()){
  cp=rsfact.getInt(1);
      fic=rsfact.getInt(2);
      frc=rsfact.getInt(3);
      ffi=rsfact.getInt(4);
      fct=rsfact.getInt(5);
      ftr=rsfact.getInt(6);
      int tsfv;

      tsfv=((fcp*2)+(fic*3)+(frc*4)+(ffi*3.14)+(fct-4)+(ftr+9))/6;
      graph.setInt(2, tsfv);
      graph.executeUpdate();

  }
 }
EN

回答 1

Stack Overflow用户

发布于 2012-09-28 19:31:45

您没有安装result (ResultSet对象)并试图调用结果集的方法,因此是ResultSet

代码语言:javascript
复制
    ResultSet rsfact=null; // **rsfact is null**
       int colCount=1;
      PreparedStatement psfact=(PreparedStatement) con.prepareStatement("SELECT * FROM fact");
      PreparedStatement psgraph=(PreparedStatement) con.prepareStatement("INSERT INTO graph values(?,?,?,?)");
      int cp,ic,rc,fi,ct,tr;
      rsfact = psFact.executeQuery(); **// this instantiates ResultSet, if you dont includee this statement rsfact would still be null.**
while(rsfact.next()) // **if rsfact null and u execute this line it would throw nullpointer exception(cuz rsfact is null)**
  {
      cp=rsfact.getInt("1");
      ic=rsfact.getInt("2");
      rc=rsfact.getInt("3");
      fi=rsfact.getInt("4");
      ct=rsfact.getInt("5");
      tr=rsfact.getInt("6");
      int rfv;

      rfv=(cp+ic+rc+fi+ct+tr)/6;
      graph.setInt(colCount, rfv);
       colCount++;
}
      graph.executeUpdate();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12646189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档