Я вставил строку, я хочу получить его ID и плюс его с INT и вставить в эту строку - PullRequest
2 голосов
/ 10 марта 2012

Я вставил строку в свою таблицу, и я хочу получить ее идентификатор, плюс ее с помощью int и вставить в эту строку.

Но я не знаю, как получить его удостоверение личности.

Вот код вставки:

objCommand.Connection = objConnection;
objCommand.CommandText = "INSERT INTO Moin " +
                         " (Title, TotalID, Code ) " +
                         "VALUES (@Title , @TotalID, @Code )";

Ответы [ 3 ]

1 голос
/ 10 марта 2012
objCommand.Connection = objConnection;
            objCommand.CommandText = "INSERT INTO Moin " +
                " (Title, TotalID, Code ) " +
                "VALUES (@Title , @TotalID, @Code ) SELECT SCOPE_IDENTITY()";
object id = objCommand.ExecuteScalar();
1 голос
/ 10 марта 2012

Попробуйте использовать в своем запросе OUTPUT предложение SQL Server - он может вернуть любое только что вставленное значение (здесь я предполагаю, что ваш столбец называется ID - адаптируйте при необходимости):

objCommand.Connection = objConnection;
objCommand.CommandText = "INSERT INTO Moin(Title, TotalID, Code ) " +
                         "OUTPUT Inserted.ID " +
                         "VALUES (@Title , @TotalID, @Code ); "  

и затем выполните его так:

int result = (int)objCommand.ExecuteScalar();

Поскольку вы возвращаете только одну строку и один столбец (только INT), вы можете использовать .ExecuteScalar() дляполучить это значение обратно из оператора INSERT.

С помощью предложения OUTPUT можно вернуть любые только что введенные значения, а не только столбец идентификаторов.Таким образом, вы также можете возвращать значения, которые заполнены базой данных значениями по умолчанию, или что вам нужно.Если вы возвращаете несколько значений, вам нужно использовать средство чтения данных, чтобы прочитать их все - ExecuteScalar() работает только для одного значения.

Но, как правильно заметил Андерс, - использование ORM, такого как Entity Framework, сделает всеэто автоматически для вас, и вам больше не придется иметь дело с этими необработанными командами SQL ....

0 голосов
/ 10 марта 2012

Сборка команд SQL в строках должна рассматриваться как устаревшая техника.Если вы используете Entity Framework или linq-to-sql, получение идентификатора выполняется автоматически для вас.

При использовании чистого SQL используйте функцию SCOPE_IDENTITY() для получения идентификатора вставленного элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...