2014-01-20 6 views
0

Я пытаюсь прочитать данные из базы данных SQLite. Тогда я хотел бы, чтобы заполнить его в мой DataGrid, но следующий код не работает (dataUrl является DataGrid-Object):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!"); 
    } 

Это does't даже бросить исключение.

ответ

3

Вы должны установить ItemsSource вместо DataContext и для этого вам нужно получить DataView, как она принимает только IEnumerable:

dataUrl.ItemsSource = table.DefaultView; 

или

dataUrl.ItemsSource = new DataView(table); 

также удалить command.ExecuteNonQuery();

You может использовать ExecuteNonQuer y выполнять операции с каталогом (например, запрашивать структуру базы данных или создавать объекты базы данных, такие как таблицы), или изменять данные в базе данных без использования DataSet, выполняя инструкции UPDATE, INSERT или DELETE.

также, потому что вы используете параметры и 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