2011-12-02 34 views
0

我正在開發一個新項目。它使用訪問數據庫,並在以前的幫助下,我可以搜索多行。麻煩的是,搜索只檢查數據庫中最後一個字段的匹配項。我想我需要爲每一行使用一個for循環。我在下面試過。但是我得到的問題是:在數據庫結果上循環多行

使用未分配的局部變量的「returnedRows」

我不知道如何解決它,如果我的代碼,甚至接近實現這一目標。

private void btnSearch_Click(object sender, EventArgs e) 
{ 
    string searchFor = txtSearch.Text; 
    int results = 0; 

    DataRow[] returnedRows; 

    results = returnedRows.Length; 

    if (results > 0) 
    { 
     for (int i = 0; i < results; i++) 
     { 
     DataRow dr1; 

     dr1 = returnedRows[i]; 

     for (int j = 0; j < results; j++) 
     { 
      DataRow dr2; 
      dr2 = returnedRows[j]; 
      returnedRows = ds1.Tables["Laptops"].Select("Memory='" + searchFor + "' and HD='" + searchFor + "'"); 
     } 

     MessageBox.Show("Maker - " + (dr1[1].ToString() + "\n" + "Model - " + (dr1[2].ToString() + "\n" + "Current Price - £" + (dr1[3].ToString())))); 
     } 

    } 

    else 
    { 
     MessageBox.Show("No such item"); 
    } 
} 
+0

「returnedRows」在哪裏初始化?你的SQL查詢是什麼時候? – Otiel

+1

你從來沒有真正將任何東西分配給「returnedRows」。您必須對數據庫執行某種類型的查詢,並將結果放入此變量中。因爲它的值是「null」,所以你不能得到空值的長度。 – jklemmack

+0

您沒有在您的收藏中填充任何東西。我沒有看到你從數據庫中獲取行的位置? – tsells

回答

0

一種方法是使用一個讀者對象。這裏有一些很好的鏈接:

但不管你最初的問題,你絕對總是需要你使用它之前初始化任何陣列(甚至得到「長度」)。

+0

對不起。我完全喪失了。如果它有幫助,這就是我的代碼是從中建立起來的,從中可以幫助解釋一些代碼。 http://www.homeandlearn.co.uk/csharp/csharp_s12p12.html –

+0

建議:剪切/粘貼我給你的例子之一,並嘗試一下。 – paulsm4