2012-02-14 82 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());