Просто пытаюсь выполнить вставку и затем получить @@ Identity, но это оказывается немного сложным.
Итак, у меня есть следующая Sql:
int retInt = 0;
string Sql = insertSql;
Connection.Open();
commandArg.CommandText = insertSql;
commandArg.Connection = Connection;
commandArg.ExecuteNonQuery();
commandArg.CommandText = "SELECT @@Identity;";
commandArg.CommandText = Sql;
retInt = (int)commandArg.ExecuteScalar();
return retInt;
Но когда я в конце получаю команду ExecuteScalar, я получаю исключение нулевой ссылки. Я делаю что-то не так с csharp? Потому что, когда я делаю это в редакторе Sql, он работает (когда я выполняю обе команды в строке).
Надеюсь, кто-то может помочь ....
(кстати, в качестве параметра передается commandArg)
UPDATE:
мой оригинальный пост был неверным, но я изменился и все еще получаю сообщение об ошибке. Надеюсь, кто-то может помочь!
ОБНОВЛЕНИЕ 2:
После прочтения ниже я вижу, что мой код просто неаккуратный, поэтому я исправил код, чтобы он был таким, и он работает! ...
SqlCeConnection myConnection = new SqlCeConnection(@"Data Source=C:\database.sdf");
SqlCeCommand myCommand = new SqlCeCommand();
myCommand.Connection = myConnection;
myConnection.Open();
myCommand.CommandText = "Insert into tbl_media (dateadded) values (getdate())";
SqlCeDataReader insertReader = myCommand.ExecuteReader();
myCommand.CommandText = "select @@identity";
SqlCeDataReader identityReader = myCommand.ExecuteReader();
myConnection.Close();