SELECT @@ IDENTITY в Access всегда возвращает 0
Я пытался найти решение этой проблемы, но пока ничего не получалось.
private void Insert()
{
string ConnectionStringAccess = Provider=Microsoft.ACE.OLEDB.12.0;Data Source=###Jet OLEDB:Database Password=###;
string query2 = "Select @@Identity";
int id = -1;
string Query = "INSERT INTO tblTable (EmpNo, Name) VALUES (132, 'TestName');";
OleDbConnection con = new OleDbConnection(ConnectionStringAccess);
OleDbCommand cmd = new OleDbCommand(Query, con);
try
{
con.Open();
if (cmd.ExecuteNonQuery() == 1)//the insert succeded
{
cmd.CommandText = query2;
id = Convert.ToInt32(cmd.ExecuteScalar());
}
}
catch (Exception ex)
{
//log the ex
}
finally
{
con.Dispose();
con.Close();
}
}
Каждый раз, когда я использую описанный выше метод, я всегда получаю 0 в «id». Что я делаю неправильно? Я попытался использовать другую строку подключения или другой способ получить последний идентификатор:
Provider = Microsoft.Jet.OLEDB.4.0;SCOPE_IDENTITY ()но опять ничего. Access db 2003 или старше (точно не уверен).