2014-05-12 29 views
1

我試圖從訪問數據庫檢索數據。我在一個類中寫了函數,並且出現了這個錯誤。所以請任何人都知道這個問題的答案,請讓我知道我該如何解決它。下面的函數是寫在一個類中,我需要知道如何使用這個函數顯示數據到listview控件,以及如何調用它的形式加載事件。我試圖解決這個問題,我仍然沒有得到解決方案。使用類選擇訪問數據庫中的數據

public List<String> displayRoom() 
{ 
    List<String> rooms = new List<String>(); 

    String query = "select * from room"; 
    cmd = new OleDbCommand(query, connect); 
    reader = cmd.ExecuteReader(); 
    while(reader.Read()){ 
     rooms.Add(reader["buyer_name"].ToString()); 
     rooms.Add(reader["room_type"].ToString()); 
     rooms.Add(reader["date_from"].ToString()); 
     rooms.Add(reader["date_to"].ToString()); 
    } 
    return rooms; 
} 
+0

你得到的錯誤是什麼?給我們更多的信息! – Matthijs

+0

錯誤無法將類型'System.Collections.Generic.List '隱式轉換爲'System.Windows.Forms.ListView「這是我得到的錯誤 –

+0

您可以向我們展示您將語句分配給列表 - 數據到你的列表視圖? – Matthijs

回答

0

如果你能然後就在下面一行的形式負載或窗體類寫的constructor讀取數據庫中正確數據:

//here dbClass is an instance of your database class 
List<String> rooms = dbClass.displayRoom(); //though `get/load rooms()` would be more appropriate 
foreach (string s in rooms) 
    { 
    ListViewItem lv=new ListViewItem(s); 
    listView1.Items.Add(lv); //listView1 is the ListView instance in your form 
    } 

編輯

如果你的Form有名字Form,那麼無論是在Form1_Load(object sender, EventArgs e)還是在public Form1()的構造函數(調用InitializeComponent之後),都​​可以放上面的代碼。

+0

你能解釋上面的代碼與我的完整代碼它是一個函數在數據庫類 我可以插入類文件的所有數據 –

+0

我可以使用上面的代碼。但我的函數放在一個類,所以我需要知道如何將它調用到表單加載 –

+0

如果您從數據庫中讀取的類名是'DatabaseClass',則以load方法的形式創建一個實例'DatabaseClass dbClass = new DatabaseClass;' ,然後使用上面的代碼。 – Rakib

-2

的ExecuteReader需要一個開放的連接:

connect.Open(); 

插入略高於

reader = cmd.ExecuteReader(); 

並關閉連接,當你完成

} 
connect.Close(); 
return rooms; 

MSDN爲詳細信息...

+0

如果你告訴他有關連接,它應該關閉也許是使用聲明? – Matthijs

+0

是的你是對的:) – DeathSpank

+0

但這並不能回答他的問題;如果你看看他在評論中提供的錯誤。你也不能打開一個命令,你應該打開一個連接,在這種情況下,「連接」 – Matthijs