作者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
1F:→ lin1987www:sql後面要加 ;SELECT CAST(scope_identity() AS int); 07/03 19:30
2F:→ twoseven:我是在後面加上 SELECT @@identity 07/03 22:26