作者aiueoH (滿滿的)
看板Database
標題[SQL ] SqlCeCommand.ExecuteScalar Insert回傳0
時間Wed Jul 3 15:14:12 2013
小弟是使用 C# 連結 SQL Compact Edtition
想要在 Insert 之後馬上取得新增的資料 ID
因此使用了 SqlCeCommand.ExecuteScalar()
參考網路上的說明
應該是會回傳我剛剛 Insert 的 ID
實際用起來 這個 function 總是回傳 Null
但資料確實有 Insert 進去沒錯
我的 SQL 語法是這樣的
INSERT INTO schedule
(name, on_hour, on_minute, off_hour, enabled, off_minute)
VALUES
(@name,@on_hour,@on_minute,@off_hour,@enabled,@off_minute)
完整的 C# 程式碼如下
string sql = @"
INSERT INTO schedule
(name, on_hour, on_minute, off_hour, enabled, off_minute)
VALUES
(@name,@on_hour,@on_minute,@off_hour,@enabled,@off_minute)
";
SqlCeCommand cmd = _connection.CreateCommand();
cmd.CommandText = sql;
cmd.Parameters.AddWithValue("@name", schedule.name);
cmd.Parameters.AddWithValue("@on_hour", schedule.on_hour);
cmd.Parameters.AddWithValue("@on_minute", schedule.on_minute);
cmd.Parameters.AddWithValue("@off_hour", schedule.off_hour);
cmd.Parameters.AddWithValue("@off_minute", schedule.off_minute);
cmd.Parameters.AddWithValue("@enabled", schedule.enabled);
return Convert.ToInt32(cmd.ExecuteScalar());
一直回傳 Null 然後經過 Convert 變成 0 ...
不知道版上有沒有跟我一樣經驗的 可以替小弟解惑
感謝 ~~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.124.183.60
→ lin1987www:sql後面要加 ;SELECT CAST(scope_identity() AS int); 07/03 19:30
→ twoseven:我是在後面加上 SELECT @@identity 07/03 22:26