0

这是这里的代码,我试图使用准备好的语句将一些值放入数据库,但得到这个空异常。

java.sql.PreparedStatement stmt1 = null;
for(int index2=0;index2<3;index2++)
{
  for(int index1=0;index1<5;index1++)
  {   
     String tt = "INSERT INTO   timetable(col1,col2,col3,col4,col5) VALUES(?,?,?,?,?);";
     stmt = con.prepareStatement(tt);
     stmt1.setInt(index1+1,index1*index2);
  }
  int success = 2;
  success = stmt1.executeUpdate();
 }
4

4 回答 4

5

这里

stmt=con.prepareStatement(tt); // use stmt1 instead of stmt
stmt1.setInt(index1+1,index1*index2);// this is NULL

在上面你初始化的行中stmt

于 2013-04-24T11:49:36.160 回答
2

初始化stmt1,它仍然为空。

于 2013-04-24T11:50:06.540 回答
0

它应该是

stmt1=con.prepareStatement(tt);
stmt1.setInt(index1+1,index1*index2);

并不是

stmt=con.prepareStatement(tt);
stmt1.setInt(index1+1,index1*index2);

第二个代码应该给出编译错误,如果这是你得到的完整代码。

于 2013-04-24T11:52:13.347 回答
0

你应该把你的语句从循环中拉出来,否则你会继续创建一个新的准备好的语句,其中只设置了五个参数中的一个:

更改您的代码:

for(int index1=0;index1<5;index1++)
{   
    String tt="INSERT INTO   timetable(col1,col2,col3,col4,col5) VALUES(?,?,?,?,?);";
    stmt=con.prepareStatement(tt);
    stmt1.setInt(index1+1,index1*index2);
}

String tt="INSERT INTO   timetable(col1,col2,col3,col4,col5) VALUES(?,?,?,?,?);";
stmt1=con.prepareStatement(tt);

for(int index1=0;index1<5;index1++)
{   
    stmt1.setInt(index1+1,index1*index2);
}
于 2013-04-24T12:00:08.973 回答