2017-01-06 70 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.. 
} 

上面的代碼是我用來更新我的數據庫的報警表。 int a返回1,但數據庫實際上沒有更新。我究竟做錯了什麼? visual studio也不會給我任何錯誤信息。SqlCommand返回1,但數據庫沒有得到更新..我做錯了什麼?

+3

您可能需要提交您的事務。 –

+0

像sqllite這樣的一些數據庫總是使用事務,您需要提交事務以'保存'對數據庫的更改(或者可能關閉連接) –

+1

您怎麼知道數據庫未更新?你正在查詢並沒有插入任何內容? – NicoRiff

回答

-2

ExecuteNonQuery將返回成功的1。您正在執行INSERT聲明而不是UPDATE聲明。如果你想添加的新記錄的ID使用

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

然後用

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

如果ExecuteNonQuery成功,則返回受影響的行數不爲1。我認爲OP只是在「東西進入我的數據庫」的意義上使用了術語_updated_ –

+0

是的,我使用術語''updated''作爲Tim的意思''東西進入我的數據庫''' 給我有2個列表視圖> (1充滿了他們玩的藝術家的名字和時間) (1爲空) 如果我從listview1中選擇一位藝術家並按下''添加鬧鐘' '我想寫這個藝術家的時間到我的table.alarms並在listview2中查看它(顯示我爲不同藝術家設置的所有警報)。 問題: Listview1正常工作 Listview2可以查看alarms.table我的數據庫(測試) 但我不能從窗體插入項目。 –

相關問題