#c# #ms-access
#c# #ms-access
Вопрос:
Когда я пытаюсь вставить что-то в базу данных access и выполнить запрос для извлечения последней вставленной строки, он выдает мне последнюю вставленную строку.
Это указывает на то, что запрос, который я использовал для извлечения последней строки, еще не удалось прочитать (последняя вставленная), что указывает на наличие проблемы во времени выполнения вставки…
Вот мой код:
tst t = new tst() { txt="test"};
t.Insert();
var res = DataAccess.GetSqlValue("select * from tst where id=(select max(id) from tst)", EgxDataType.Msaccess);
Как я могу решить эту проблему?
Комментарии:
1. Каково определение вашего
Insert
метода?2. Вставить метод формы вставить инструкцию sql затем передает параметры в инструкцию sql и, наконец, выполняет не запрос с помощью OleDbCommand
Ответ №1:
Попробуйте это:
SELECT * FROM tst WHERE id=(SELECT max(id 1) FROM tst)
Комментарии:
1. Спасибо MiHawk, но это не решение упомянутой проблемы, и если оно работает один раз, оно не будет работать в следующий раз, потому что оно зависит от времени выполнения вставки.
Ответ №2:
Обратитесь к этому подходу msdn http://msdn.microsoft.com/en-us/library/59x02y99 (v = против 110).aspx
Или
в more вы можете изменить процесс вставки.
Insert Into Table_1(Name)
OutPut Inserted.Id,Inserted.Name
values('Sandeep')
Теперь, если вы запустите select * from Inserted
, вы получите последнюю запись в виде таблицы, которая вставляется последней.
и используйте ExecuteReader в OleDbCommand для получения результата.
Комментарии:
1. Это не моя проблема — извлекать записи в виде таблицы или нет, кроме того, это плохо повлияет на производительность