2014-09-16 2 views
1

Я пытаюсь использовать WPF для создания базы данных и вставки данных в таблицу.Вставить данные в SQLite

Я использую кнопку для вставки 4 разных данных в таблицу, работает отлично, но я могу вставить только «одни» данные в таблицу, независимо от того, сколько раз я нажимаю кнопку.

Вот мой код:

private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     SQLiteConnection sqlite_conn; 
     SQLiteCommand sqlite_cmd; 
     SQLiteDataReader sqlite_datareader; 

     sqlite_conn = new SQLiteConnection("Data Source=imageDB.db;Version=3;New=True;Compress=True;"); 
     sqlite_conn.Open(); 
     sqlite_cmd = sqlite_conn.CreateCommand(); 
     sqlite_cmd.CommandText = "CREATE TABLE image_table (id integer, name varchar(100), location varchar(500), appendix varchar(500));"; 
     sqlite_cmd.ExecuteNonQuery(); 

     string key = nowKey.ToString(); 
     string name = dbNameBox.Text; 
     string location = dbLocationBox.Text; 
     string app1 = dbNotebox.Text; 

     sqlite_cmd.CommandText = "INSERT INTO image_table (id, name, location, appendix) VALUES ('" + nowKey.ToString() + "', '" + name + "', '" + location + "', '" + app1 + "');"; 

     sqlite_cmd.ExecuteNonQuery(); 

     sqlite_cmd.CommandText = "SELECT * FROM image_table"; 

     sqlite_datareader = sqlite_cmd.ExecuteReader(); 

     while (sqlite_datareader.Read()) 
     { 
      string data = sqlite_datareader.GetString(3); 
      MessageBox.Show(data); 
     } 

     sqlite_conn.Close(); 
    } 

Я не использовал «автоинкремент» ключевое слово здесь, ни ни «первичный ключ». Я попытался будут сдвинуты

sqlite_conn = new SQLiteConnection("Data Source=imageDB.db;Version=3;New=True;Compress=True;"); 

из функции, но она по-прежнему не работает.

Прошу, дайте мне совет! Действительно оценили Спасибо заранее!

+0

на каждый клик вы создаете таблицу с нуля. Разве вы не должны создавать таблицу один раз, а затем вставлять данные в одну и ту же таблицу впоследствии? Так что происходит, когда вы нажимаете кнопку, ваша таблица создается снова, перезаписывая то, что уже было там. – Ehsan

+0

WPF несет ответственность за * визуализацию и интерактивность * поведение _only_. Все в вашем обработчике событий является простым старым C#. – Gusdor

+0

Да, и я использую WPF в другом разделе моей программы, это только раздел, который заставил меня по-настоящему запутать и запастись мной. – Alanight

ответ

0

при каждом нажатии вы создаете таблицу с нуля. вы должны создавать таблицу один раз (возможно, при запуске программы или другой щелчке на кнопке, в зависимости от ваших потребностей), а затем вставлять данные в одну и ту же таблицу впоследствии.

В настоящее время происходит, когда вы нажимаете кнопку, ваша таблица создается снова, перезаписывая то, что уже было там.

+0

OK! Понимаю. Я попробую! Большое спасибо! – Alanight

0

Вы создаете новую таблицу каждый раз. Чтобы решить эту проблему, используйте: CREATE TABLE IF NOT EXISTS

sqlite_cmd.CommandText = "CREATE TABLE IF NOT EXISTS image_table (id integer, name varchar(100), location varchar(500), appendix varchar(500));"; 
    sqlite_cmd.ExecuteNonQuery(); 
Смежные вопросы