2017-01-06 1 views
2
using (SqlConnection connection = new SqlConnection(connectionString)) 
{ 
    SqlCommand cmd = new SqlCommand("INSERT INTO Alarm (artistname, tijd) VALUES (@artistname, @tijd)", connection); 
    cmd.CommandType = CommandType.Text; 
    cmd.Connection = connection; 
    cmd.Parameters.AddWithValue("@artistname", alarm.ArtistName); 
    cmd.Parameters.AddWithValue("@tijd", alarm.Time); 
    connection.Open(); 
    int a = cmd.ExecuteNonQuery(); 
    System.Windows.Forms.MessageBox.Show(a.ToString()); 
    // returns 1 but database doesn't actually update.. 
} 

Код, приведенный выше, является тем, что я использую для обновления таблицы Alarm моей базы данных. int a возвращает 1, но база данных фактически не обновляется. Что я делаю не так? Visual Studio не дает мне никаких сообщений об ошибках.SqlCommand возвращает 1, но база данных не обновляется .. что я делаю неправильно?

+3

Вы, возможно, потребуется совершить транзакцию. –

+0

некоторые базы данных, такие как sqllite, всегда используют транзакцию, вам необходимо зафиксировать транзакцию для «сохранения» изменений в базе данных (или, может быть, с закрытым подключением) –

+1

, откуда вы знаете, что база данных не обновляется? вы запрашиваете, и ничего не вставлено? – NicoRiff

ответ

-2

ExecuteNonQuery вернет 1 успешный результат. Вы выполняете оператор INSERT, а не заявление UPDATE. Если вы хотите, чтобы идентификатор новой записи, которая была добавлена ​​с помощью

INSERT INTO Alarm (artistname, tijd) VALUES (@artistname, @tijd); 
Select Scope_Idenitity();

затем использовать

int a = (int)cmd.ExecuteScalar();
+2

'ExecuteNonQuery' возвращает количество затронутых строк не 1, если оно было успешным. Я думаю, что OP просто использовал термин _updated_ в значении «что-то попало в мою базу данных» –

+0

Да, я использую термин «обновленный», как сказал Тим со значением «что-то попало в мою базу данных» Чтобы дать ua более четкое представление о приложении/проблеме: У меня есть 2 списков просмотров> (1 заполняется именами и временем, когда они играют) (1 пуст) Если я выберу художника из списка view1 и нажмите '' add alarm ' «Я хочу написать этот художник со временем на мой table.alarms и просмотреть его в listview2 (тот, который показывает все мои тревоги, которые я установил для разных художников). Проблема: Listview1 отлично работает Listview2 может просматривать alarms.table im my database (проверено) Но я не могу вставить в него элементы из формы. –

Смежные вопросы