java - 数组值存入数据库postgresql

标签 java arrays jdbc

我有一组数组值,我想插入数据库,但结果却是我不想要的。

我希望我的数据库可以像这样存储:

id_code  | id_description
--------------------------- 
PO1      |  hello 
PO2      |  hi

但是当我运行代码时,它存储如下:

id_code        | id_description
-----------------------------------
[PO1,P02]      |  [hello, hi]

这是编码:

public void addID(IDInfo IDInformation) {
        try {
            PreparedStatement preparedStatement = connection
                    .prepareStatement("INSERT INTO id (id_code, id_description)"
                            + "VALUES (?, ?)");
            preparedStatement.setString(1, Arrays.toString(IDInformation.getIDCode()));
            preparedStatement.setString(2, Arrays.toString(IDInformation.getIDDescription()));
            preparedStatement.executeUpdate();
            }
        }

        catch (SQLException e){
            e.printStackTrace();
        }
    }

Controller :

            String action = request.getParameter("action");
            IDInfo idInfo = new IDInfo();
            String[] Code = request.getParameterValues("idCode");
            String [] Describe = request.getParameterValues("idDescription");


            idInfo.setidCode(Code);
            idInfo.setidDescription(Describe);

这是怎么造成的,如何解决?

最佳答案

PreparedStatement preparedStatement = connection
   .prepareStatement("INSERT INTO id (id_code, id_description)"
                     + "VALUES (?, ?)");
preparedStatement.setString(1, Arrays.toString(IDInformation.getIDCode()));
preparedStatement.setString(2, Arrays.toString(IDInformation.getIDDescription()));
preparedStatement.executeUpdate();

阅读上面的代码。它有什么作用?它执行单个请求,创建包含两个值的单行。

你想要的是两行。

所以你应该执行该语句两次:

  • 将第一个代码和第一个描述作为参数
  • 其中第二个代码和第二个描述作为参数

不使用对象会让你自己的任务变得困难。您应该拥有一个包含对象的数组(或集合),而不是拥有两个数组,一个包含代码,一个包含描述。每个对象都有一个代码和一个描述:

PreparedStatement preparedStatement = connection
   .prepareStatement("INSERT INTO id (id_code, id_description)"
                     + "VALUES (?, ?)");
for (Product product : products) {
    preparedStatement.setString(1, product.getCode());
    preparedStatement.setString(2, product.getDescription());
    preparedStatement.executeUpdate();
}

关于java - 数组值存入数据库postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36955160/

相关文章:

java - 在另一个类的 UI 线程上运行

java - ListView列表-引用变量还是对象?

arrays - 在 MPI 中将二维数组旋转 90 度

java - JSONObject 未正确更新

java - 如何将 Postgresql 大对象 API 与 Spring JdbcTemplate 结合使用

java - 尝试调用 SQLite 驱动程序时不断获取 "IOException: Access Denied"

java - 异常在线程 "main"java.lang.UnsatisfiedLinkError : no opencv_java2410 in java. library.path

java - SupportManager.getFragmentById 返回 null

arrays - 上下文类型 'Any' 不能与数组文字 Swift 3 一起使用

Tomcat-6.0.18,扩展目录结构,context.xml中的datasource