在java中为预准备语句获取null异常

时间:2013-04-24 11:48:10

标签: java sql

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

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 个答案:

答案 0 :(得分:5)

下面

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

在上面一行中您初始化了stmt

答案 1 :(得分:2)

初始化 stmt1 ,它仍为空。

答案 2 :(得分:0)

应该是

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

而不是

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

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

答案 3 :(得分: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);
}