ADO.NET + MS Access - Как получить @@IDENTITY
От: _Senya  
Дата: 14.04.05 19:37
Оценка:
Возможно, вопрос глупый,но все-таки хотелось бы получить ответ.

У меня есть таблица Сообщений с полем msg_id (autonumber)

Имею:


private OleDbCommand Command_Message_Create(Message message)
{
    string cmdText = new StringBuilder()
        .Append("    INSERT INTO tbl_messages")
        .Append("    (")
        .Append("        type,")
        .Append("        header,")
        .Append("        date_received,")
        .Append("        date_read,")
        .Append("        casier_id,")
        .Append("        msg")
        .Append("    )")
        .Append("    VALUES")
        .Append("    (")
        .Append("        @type,")
        .Append("        @header,")
        .Append("        @date_received,")
        .Append("        @date_read,")
        .Append("        @casier_id,")
        .Append("        @msg")
        .Append("    )")
        .ToString();

    OleDbCommand cmd = new OleDbCommand(cmdText, connection);

    cmd.Parameters.Add(new OleDbParameter("@type", OleDbType.Integer,
        4, ParameterDirection.Input, true, 0, 0, "type",
        DataRowVersion.Current, DB.ToDB(message.Type))
        );
    cmd.Parameters.Add(new OleDbParameter("@header", OleDbType.VarChar,
        50, ParameterDirection.Input, true, 0, 0, "header",
        DataRowVersion.Current, DB.ToDB(message.Header))
        );
    cmd.Parameters.Add(new OleDbParameter("@date_received", OleDbType.Date,
        16, ParameterDirection.Input, true, 0, 0, "date_received",
        DataRowVersion.Current, DB.ToDB(message.DateReceived))
        );
    cmd.Parameters.Add(new OleDbParameter("@date_read", OleDbType.Date,
        16, ParameterDirection.Input, true, 0, 0, "date_read",
        DataRowVersion.Current, DB.ToDB(message.DateRead))
        );
    cmd.Parameters.Add(new OleDbParameter("@casier_id", OleDbType.Integer,
        4, ParameterDirection.Input, true, 0, 0, "casier_id",
        DataRowVersion.Current, DB.ToDB(message.CasierID))
        );
    cmd.Parameters.Add("@msg", DB.ToDB(message.Text));

    return cmd;
}

/// <summary>
/// Creates a message in DB
/// </summary>
/// <param name="message">Message to create</param>
public void Message_Create(Message message)
{
    OleDbCommand cmd = Command_Message_Create(message);
    try
    {
        cmd.ExecuteNonQuery();
    }
    finally
    {
        cmd.Dispose();
    }
}


Хотелось бы после вызова команды записывать в объект ID вставленной записи... Но как? Поддержки хранимых процедур нет. Два запроса подряд через ";" выполнить не удается...

Спасибо.
Дураки — не мамонты, они не вымрут...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.