【问题标题】:Unable to update table无法更新表
【发布时间】:2019-07-04 03:55:56
【问题描述】:

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

【问题讨论】:

  • Mod 警告:停止在 cmets 中争论。这适用于两个人。

标签: java mysql date jdbc


【解决方案1】:

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

【讨论】:

  • @Guru 不要在 cmets 中打扰人们,这不是网站的运作方式。当您是该网站的新手时,我会向您发出非正式警告。如果这种情况持续下去,您需要意识到这将成为骚扰,我们不接受。
  • 我已经用 varchar 更新了我的表并成功插入,如果我需要任何其他格式,我将使用 java 代码根据要求进行转换,而不是在查询上浪费时间。非常感谢@scaisEdge 抽出宝贵时间。
  • 当然,兄弟,但是您能否为我的问题投票,该问题被某人错误地否决了,您能否给我一个想法,我的数据库中有三列 id、salary、location 我很容易获取但是如何在获得兄弟的同时按薪水对这三个人进行排序?
猜你喜欢
  • 2017-10-12
  • 1970-01-01
  • 2020-12-19
  • 2017-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-24
相关资源
最近更新 更多