繁体   English   中英

如何使用datareader将scope_identity值存储到变量

[英]How to store scope_identity value to a variable using datareader

objcon.GetReader(" insert into product(name,price)Values('" + txt_name.Text + "','" + txt_price.Text + "') select scope_identity() ");

if (objcon.dr.Read())
{
    var id = objcon.dr[0].ToString();
}

objcon.dr.Close();

我想将scope_identity值存储到一个变量中。 上面的代码正在工作。 但是我没有得到变量id中的值。 有人可以帮忙吗?

自从我上次直接与ADO.Net合作以来已经有一段时间了,所以这可能不是100%准确的。

var cmd = new SqlCommand(@"
    insert into product(name,price) Values(@name, @price);
    select scope_identity();", objCon);
cmd.Parameters.AddWithValue("@name", txt_name.Text);
cmd.Parameters.AddWithValue("@price", Convert.ToInt32(txt_price.Text));
var newId = (int)cmd.ExecuteScalar();

SqlCommand对象非常适合执行不返回任何值或单个值的查询

ExecuteNonQuery()返回受影响的行数。 F.ex. 实际更新,插入或删除了多少行(注意:触发器会影响此值)

ExecuteScalar()返回结果中第一行的第一列,并忽略其余部分。 检索新插入的ID或计数或总和等是完美的选择。返回的类型是object,但是可以强制转换为期望的类型。

暂无
暂无

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

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