插入查询中的arraylist

时间:2012-02-14 08:36:24

标签: java sql

我正在尝试将excel表中的数据插入到java中的数据库中。因为我已经使用ODBC连接了两个数据库。 excelsheet有2列cname和title。 在查询Excel电子表格后,我将cname和title的resultSet值存储到arraylist中。

      List Cname = new  ArrayList();
      List Title=new ArrayList();

            Cname.add(rs.getString("Cname"));
            Title.add(rs.getString("Title"));

这样会产生这样的结果

      [aaa, bbb,cccc, dddd]
      [tree,human,animal,bird]

当我尝试使用插入查询将其插入SQL数据库时,它会像这样存储。

    statement1.executeUpdate("INSERT INTO dbo.company (Cname,Title)  SELECT      
   '"+Cname+"','"+Title+"'");


       Cname                               Title

    [aaa, bbb,cccc, dddd]        [tree,human,animal,bird]

但我希望将其存储为

      Cname               Title
     ___________________________
      aaa                  tree
      bbb                 human
      cccc                animal
      ddd                  bird

我该怎么做?请帮忙解决这个问题。

4 个答案:

答案 0 :(得分:1)

在insert语句周围放置一个for循环:

for(int i = 0; i < Cname.size(); i++)
    statement1.executeUpdate("INSERT INTO dbo.company (Cname,Title) values ( '"+Cname.get(i)+"','"+Title.get(i)+"')");

答案 1 :(得分:1)

您必须插入/更新列表值,实际上您正在插入整个列表的字符串表示。

假设两个列表都存在(非空)并且具有相同的长度,那么这是一个简单的解决方案:

for (int i = 0; i < Cname.size(); i++ {
   statement1.executeUpdate("INSERT INTO dbo.company (Cname,Title)  SELECT      
     '"+Cname.get(i)+"','"+Title.get(i)+"'");
}

注意 - 每个java类都有一个toString()方法的实现,当你“将一个对象用作一个字符串”时,就会调用该方法,就像在要创建的表达式中一样SQL语句。对于列表,该方法返回一个String,该String只包含括号中list元素的(String-representationations)。

答案 2 :(得分:0)

如果您的数据库是SQL Server,您可以参考以下Q&amp;答:只需准备xml数据并传递给存储过程。

How to Update SQL Server Table With Data From Other Source (DataTable)

答案 3 :(得分:0)

您可以创建此表单的单个SQL语句:

INSERT INTO dbo.company (Cname, Title) 
VALUES ('aaa', 'tree'), 
       ('bbb', 'human'),
       ('cccc', 'animal'),
       ('dddd', 'bird')

使用JDBC:

StringBuilder sql = new StringBuilder();
sql.append("INSERT INTO dbo.company (Cname,Title) VALUES ");

String glue = "";
for (int i = 0; i < Cname.size(); i++) {
  sql.append(glue);
  sql.append("('");
  sql.append(Cname.get(i).toString().replace("'", "''"));
  sql.append("', '");
  sql.append(Title.get(i).toString().replace("'", "''"));
  sql.append("')");
  glue = ", ";
}

statement1.executeUpdate(sql.toString());

另一种语法(如果上述内容不适用于Excel电子表格)是:

INSERT INTO dbo.company (Cname, Title) 
SELECT 'aaa', 'tree' UNION ALL 
SELECT 'bbb', 'human' UNION ALL
SELECT 'cccc', 'animal' UNION ALL
SELECT 'dddd', 'bird'

或使用JDBC

StringBuilder sql = new StringBuilder();
sql.append("INSERT INTO dbo.company (Cname,Title) ");

String glue = "";
for (int i = 0; i < Cname.size(); i++) {
  sql.append(glue);
  sql.append("SELECT '");
  sql.append(Cname.get(i).toString().replace("'", "''"));
  sql.append("', '");
  sql.append(Title.get(i).toString().replace("'", "''"));
  sql.append("'");
  glue = " UNION ALL ";
}

statement1.executeUpdate(sql.toString());