java - 无法更新表
问题描述
我有 ArrayList 包含对象数组 0、1、2。我正在使用增强的 for 循环从中打印值。当我尝试将所有值插入 MySQL 表时,它工作正常并且在同一个循环中无法执行准备好的语句并抛出空指针异常
我试图在每一行之后打印消息,它会引发空指针异常,但我可以在没有查询的情况下打印同一个循环中的所有日期。在我的 MySQL 表中,我有一个日期列 date_details
我创建了日期列并尝试在使用 obj.toString() 将每个值从对象转换为字符串后上传;然后也是同样的问题
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
解决方案
您在 insert 中的值是第一个参数,因此您应该使用 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 列与您在 param 中传递的字符串值兼容
如果您使用的是日期列,请尝试使用
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();
推荐阅读
- java - 如何从数组中获取长度作为 cass memeber?
- cassandra - 如何解决 cassandra 节点问题
- javascript - Nodejs Authorize.net重复客户付款资料错误
- datatables - DataTables寻呼机在有很多时显示一页
- c++ - 在乘法表中通过“for”循环创建标题列会产生乱码而不是所需的结果
- java - NTLM 身份验证不适用于 VCS 3 及更高版本,导致我们的 ui 应用程序工作不正常
- c - 在 0 和 1 未排序的数组中找到零元素的最快方法?
- python - Beautifulsoup 不返回所有 html
- javascript - 在 Salesforce Lightning 社区的 iFrame 中操作 DOM
- python-docx - 如何阅读 Python 中的 Docx Meta-filed?