2012-02-15 97 views
0

雖然從電子表格插入到數據庫中,我有這已經existed.so我需要在插入之前檢查存在的行的行。我正在用Java做它。 在電子表格中我有:查詢二進制搜索結果

 name 
    a 
    b 
    c 
    d 
    b 

數據庫dbo.emp有:

name id 
x  1 
y  2 
z  3 
d  4 

其中重複的行。要找出重複的行,我需要搜索arraylist。所以我查詢Excel和SQL數據庫。我把Excel表單查詢到的結果放入了ArrayList的namexcel中。通過查詢dbo.emp到列表名爲b的結果。 現在我需要從二進制搜索中搜索哪些是已存在的行。 我寫的查詢和存儲這樣的:

 String ExcelQueryString2 = "select * from [Sheet1$]"; 
     ResultSet SpreadsheetValues = stmt2.executeQuery(ExcelQueryString2); 
     List namexcel = new ArrayList(); 
     while (SpreadsheetValues.next()) { 
     namexcel.add(SpreadsheetValues.getString("name"));} 

     String Querystring="SELECT Name from dbo.emp" 
     List namedb = new ArrayList(); 
     ResultSet rs = statement.executeQuery(Querystring); 
     while(rs.next()) 
{ 
     namedb .add(rs.getString("Name")); 
    } 

我的問題:

  1. 如何實現這些ArrayList的二進制搜索?
  2. 如何忽略插入之前該行?
  3. 如何刪除exceldatabase中存在的重複行?

請給我提供的代碼片段。

+0

你嘗試過什麼?當你遇到問題時,堆棧溢出是爲了幫助你,而不是爲你做所有的工作。 – YXD 2012-02-15 09:52:10

+0

另外,請儘量遵守基本的英語規則,正確使用大寫字母(特別是「I」)等。 – unwind 2012-02-15 10:58:35

回答

0

二進制搜索需要你保持ArrayList排序,並使用Collections.binarySearch()進行搜索。

您可能需要使用Set而不是海外商品會有 - 這保證沒有重複作爲其行爲的一部分

0

你可以考慮使用LinkedHashSet,這保證了當數據被添加到它,同時保持沒有數據被複制廣告訂單。