以下代码没有显示任何错误并且代码执行但计算并存储在 rfv 中的数据未在数据库中更新。
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
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();
}
}