我有ArrayList,它保存对象数组0,1,2。我正在使用增强的for循环 从中打印值。当我尝试 将所有值插入MySQL表,无法执行准备好的语句并引发nullpointer异常
我试图在每一行之后打印消息,并且它抛出nullpointer异常,但是我能够在没有查询的情况下在同一循环中打印所有日期。在我的MySQL表中,我有一个date列,它是date_details
我已经创建了日期列,并使用obj.toString()将每个值从对象转换为String后尝试上传。然后也是同样的问题
class InsertData
{
static void updateTable(ArrayList<Object[]> li)
{
PreparedStatement ps = null;
ResultSet rs = null;
Connection con = null;
int count=0;
try{
con = DBConnector.getConnection();
for (Object[] data : li)
{
System.out.println(data[1]+" "+data[2]+" "+data[0]);
//i am able to print all the values in data[0] without queries in normal loop
String query = "insert into user_data(date_details)values(?)";
ps = con.prepareStatement(query);
System.out.println("set dt "+data[0]);
ps.setString(1, data[0].toString());
System.out.println("set dt "+data[0]);//Stopped executing from this line
ps.execute();
}
}
}
data[o] holds below date values
06/01/2013 04:03.36 AM
06/01/2013 07:06.42 AM
06/01/2013 12:02.42 AM
答案 0 :(得分:0)
您插入的值是第一个参数,因此您应该使用1而不是3
String query = "insert into user_data(date_details) values(?)";
ps = con.prepareStatement(query);
ps.setString(1, data[0].toString());
ps.execute();
假设您的date_details列与您在参数中传递的字符串值兼容
如果您使用日期列,请尝试使用
java.sql.Date d = java.sql.Date.valueOf(data[0].toString());
String query = "insert into user_data(date_details) values(?)";
ps = con.prepareStatement(query);
ps.setDate(1, d);
ps.execute();