首页 > 解决方案 > 无法更新表

问题描述

我有 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

标签: javamysqldatejdbc

解决方案


您在 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();

推荐阅读