无法更新表格

时间:2019-02-10 14:19:54

标签: java mysql date jdbc

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

1 个答案:

答案 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();