2013-11-28 4 views
1

retreiving последнего добавленный идентификатораПолучить последний идентификатор из Firebird таблицы БДА

Я хочу, чтобы извлечь последний вставленный идентификатор из FIREBIRD базы данных. Данные succ. вставлен, запускает идентификатор вставки, поскольку он должен использовать генератор.

Я посоветовал использовать этот синтаксис

var sql = "INSERT INTO ... VALUES ... " + 
      "RETURNING Id"; 

где RETURNING Id должен возвращать идентификатор таблицы.

Я не знаю, как хранить в переменной.

int lastId = ... 
+0

где вы будете использовать УАК SQL? Как вы получаете доступ к своей базе данных? – Christos

+0

Я обращаюсь к db и использую этот sql как текст, введенный в dapper-запрос, но это не проблема. Просто извлечение последнего вставленного id из базы данных и сохранение этого значения в переменной. – user2783193

+0

Я понял, в чем проблема. Однако я должен знать, как вы будете выполнять свой запрос, чтобы узнать, как вы можете получить идентификатор, который вы хотите. К сожалению, я никогда не использовал dapper, вы говорите. Хотя, я не использовал его, я полагаю, что метод, который выполнит ваш запрос, вернет результат. Например, если вы запустите select * из таблицы, вы получите результаты, а затем вы их прочтете. Я думал о том, как Рада дал тебе несколько секунд назад. – Christos

ответ

11
var con = OpenFB2Connection(); 
var trans = con.BeginTransaction(); 

var command = new OleDbCommand("INSERT INTO ... VALUES ... RETURNING Id"); 

cmd.Parameters.Add("Id", OleDbType.Integer).Direction = ParameterDirection.Output; 


var Id = (int)cmd.ExecuteScalar(); //Here is your Id 
+1

В зависимости от ваших случаев использования я обнаружил, что ExecuteScalar() давал мне правильный результат. В противном случае, в моем случае ExecuteNonQuery() всегда возвращал 1. –

+1

@IsraelLopez Я отредактировал ответ соответственно. – Reda

Смежные вопросы