繁体   English   中英

如何使用ASP和SQL获取最后插入的行的table_ID(PK)

[英]How to get table_ID(PK) of last inserted row using asp and sql

我正在尝试使用以下代码来获取最后插入的行的值。 我知道@@ IDENTITY和IDENTITY_SCOPE,但是当我在ASP参数查询中编写代码时如何使用它们。

 SqlConnection MySQL = new SqlConnection(ConfigurationManager.ConnectionStrings["BloodDonorRegistrationConnectionString"].ToString());
            string BloodReq = "insert into Blood_Request(R_Name,R_Phone,R_Blood_Group,R_City,R_Address,Date,Time) values (@Name,@cell,@BGroup,@City,@Address,@date,@time)";

            SqlCommand Cmd = new SqlCommand(BloodReq, MySQL);
            Cmd.Parameters.AddWithValue("@Name", TextBoxName.Text);
            Cmd.Parameters.AddWithValue("@cell", TextBoxPhone.Text);
            Cmd.Parameters.AddWithValue("@BGroup", dropbownBlood.SelectedItem.Text);
            Cmd.Parameters.AddWithValue("@City", DropDownListCity.SelectedItem.Text);
            Cmd.Parameters.AddWithValue("@Address", TextBoxLocation.Text);
            Cmd.Parameters.AddWithValue("@date", DateTime.Now.Date);
            Cmd.Parameters.AddWithValue("@time", DateTime.Now.TimeOfDay);
            MySQL.Open();
            Cmd.ExecuteNonQuery();
            MySQL.Close();

请帮助并提前致谢。

使用cmd.ExecuteScalar而不是Cmd.ExecuteNonQuery() 如果要返回更多值,也可以使用ExecuteReader

并在您的Sql中使用OUTPUT INSERTED.ID

string BloodReq = "insert into Blood_Request(R_Name,R_Phone,R_Blood_Group,R_City,R_Address,Date,Time)
OUTPUT INSERTED.ID
values (@Name,@cell,@BGroup,@City,@Address,@date,@time)"
...    
string BloodReq = "insert into Blood_Request(R_Name,R_Phone,R_Blood_Group,R_City,R_Address,Date,Time) values (@Name,@cell,@BGroup,@City,@Address,@date,@time); SELECT SCOPE_IDENTITY() AS IID";

...
var insertedID = (Int32)Cmd.ExecuteScalar();

使用scope_identity ,基于您的代码的完整工作示例为:

using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["BloodDonorRegistrationConnectionString"].ToString())) {
    int insertedID;
    var cmd = "insert into Blood_Request(R_Name,R_Phone,R_Blood_Group,R_City,R_Address,Date,Time) values (@Name,@cell,@BGroup,@City,@Address,@date,@time);SELECT CAST(scope_identity() AS int)";
    using (var insertCommand = new SqlCommand(cmd, con)) {
               insertCommand.Parameters.AddWithValue("@Name", TextBoxName.Text);
               insertCommand.Parameters.AddWithValue("@cell", TextBoxPhone.Text);
               insertCommand.Parameters.AddWithValue("@BGroup", dropbownBlood.SelectedItem.Text);
               insertCommand.Parameters.AddWithValue("@City", DropDownListCity.SelectedItem.Text);
               insertCommand.Parameters.AddWithValue("@Address", TextBoxLocation.Text);
               insertCommand.Parameters.AddWithValue("@date", DateTime.Now.Date);
               insertCommand.Parameters.AddWithValue("@time", DateTime.Now.TimeOfDay);
               con.Open();
               insertedID = (int)insertCommand.ExecuteScalar();
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM