2012-02-14 83 views
1

我想从Excel表插入到java数据库中的数据。为此,我使用ODBC连接了两个数据库。 excelsheet有2列cname和title。 查询Excel电子表格后,我将cname和title的resultSet值存储到arraylist中。插入查询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 

我怎么做这个???请帮助在此解决。

回答

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语句的表达式中一样。对于列表,该方法返回一个字符串,该字符串仅包含括号中列表元素的(字符串表示)。

1

将一个for循环在你插入语句:

for(int i = 0; i < Cname.size(); i++) 
    statement1.executeUpdate("INSERT INTO dbo.company (Cname,Title) values ('"+Cname.get(i)+"','"+Title.get(i)+"')"); 
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());