2014-01-20 107 views
0

我想從SQLite數據庫中讀取數據。然後,我想填補它變成我的DataGrid,但下面的代碼不起作用(dataUrl是在DataGrid-對象):Visual Studio 2013填充DataGrid

string sql = "SELECT rowid, url FROM urls WHERE url LIKE '%@search%'"; 
    SQLiteConnection myConnection = new SQLiteConnection(@"Data Source=C:\URL Store\URL Store\bin\Release\urlStore.sqlite;Version=3;Password=*censored*;"); 
    SQLiteCommand command = new SQLiteCommand(sql, myConnection); 
    command.Parameters.AddWithValue("@search", txtSearch.Text); 
    myConnection.Open(); 
    command.ExecuteNonQuery(); 
    SQLiteDataAdapter adapter = new SQLiteDataAdapter(command); 
    DataSet set = new DataSet(); 
    try 
    { 
     //    
     //ESPECIALLY THIS PART IS IMPORTANT TO ME 
     // 
     adapter.Fill(set); 
     DataTable table = set.Tables[0]; 
     dataUrl.DataContext = table; 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show("Error loading data!"); 
    } 

但這並沒有甚至拋出一個異常。

回答

3

你應該設置的DataContext以及您需要得到DataView因爲它只接受IEnumerableItemsSource代替:

dataUrl.ItemsSource = table.DefaultView; 

dataUrl.ItemsSource = new DataView(table); 

也刪除command.ExecuteNonQuery();

你可以使用ExecuteNonQuer y執行目錄操作(例如,查詢數據庫的結構或創建數據庫對象(如表)),或通過執行UPDATE,INSERT或DELETE語句更改數據庫中的數據而不使用DataSet。

還,因爲你使用的參數和AddWithValue(..),您的查詢應該是這樣的:

string sql = "SELECT rowid, url FROM urls WHERE url LIKE @search"; 

,並添加參數是這樣,而不是:

command.Parameters.AddWithValue("@search", "%" + txtSearch.Text + "%"); 

這是整點使用參數

+0

這工作得更好。 DataGrid現在顯示錶格的標題,但沒有條目。 – SoBiT

+0

你是否在命令行中檢查了你的SQL?或者至少調試查詢的結果。 – Pellared

+0

@SoBiT,刪除'command.ExecuteNonQuery();'看看它是否有效然後 – dkozl