使用c#和Microsoft Access插入的最后一个ID

时间:2018-08-10 16:08:02

标签: c# sql ms-access

如何插入最后一个ID?我需要子表的新ID。 谢谢。

1 个答案:

答案 0 :(得分:0)

尝试使用两个OleDbCommand,一个用于INSERT语句,另一个用于SELECT @@ IDENTITY语句。使用第二个OleDbCommand,在一个OleDbConnection中,您可以使用ExecuteNonQuery首先运行INSERT,然后使用ExecuteScalar运行SELECT @@ IDENTITY。您可以。解析结果以拥有新的ID。

public bool InserisciLibro(LibroCLS libro)
    {
        bool isSuccess = false;
        using (OleDbConnection con = new OleDbConnection(myConnectionstring))
        {
            con.Open();
            string SQL =@"INSERT INTO tblLibri (AutoreFK, Titolo,   Pagine,  EditoreFK, ISBN,   Notes) VALUES (@AutoreFK, @Titolo, @Pagine, @EditoreFK, @ISBN, @Notes);";
            int idnewlibro = 0;
            using (OleDbCommand cmd = new OleDbCommand(SQL, con))
            {
                cmd.Parameters.AddWithValue("@AutoreFK",libro.AutoreFK);
                cmd.Parameters.AddWithValue("@Titolo", libro.Titolo);
                cmd.Parameters.AddWithValue("@Pagine", libro.Pagine);
                cmd.Parameters.AddWithValue("@EditoreFK", libro.EditoreFK);
                cmd.Parameters.AddWithValue("@ISBN", libro.ISBN);
                cmd.Parameters.AddWithValue("@Notes", libro.Notes);
                int row = cmd.ExecuteNonQuery();

                //ora lancio il cmd per ottenere l'id autoincrementale ottenuto
                OleDbCommand cmdIdentity = new OleDbCommand("SELECT @@IDENTITY", con);                    
                idnewlibro =(int) cmdIdentity.ExecuteScalar();
                if (idnewlibro != 0)
                {
                    isSuccess = true;
                }                   
            }
        }
        return isSuccess;
    }