检索SQL语句的输出参数
我使用的表格有两列,customer_id
和customer_name
。
customer_name
是一个简单的varchar
,customer_id
是一个自动递增的主键。
我想使用C#应用程序插入customer_name
,并检索的值customer_id
。
只需插入即可,只需使用即可解决
using (SqlConnection connection = new SqlConnection(AppConstants.ConnectionString))
{
using (SqlCommand command = new SqlCommand("INSERT INTO custom_customer (customer_name) VALUES (@name);"))
{
command.Parameters.Add(new SqlParameter("name", customer));
connection.Open();
command.ExecuteNonQuery();
connection.Close();
}
}
我找到了该OUTPUT
语句的一些文档,这些文档可用于检索值。
我认为正确的语法是
INSERT INTO custom_customer (customer_name)
OUTPUT Inserted.customer_id
VALUES (@name);
我认为我需要使用
command.ExecuteReader();
但是后来我被困住了。我应该如何从查询中获取值?
-
首先,使用
ExecuteNonQuery
进行写操作。执行命令后Parameters
,由于已将参数设置为样本的输出参数,因此可以从集合中读取参数:command.Parameters["name"].Direction = System.Data.ParameterDirection.Output; command.ExecuteNonQuery(); object name = command.Parameters["name"].Value;
如果想知道
Id
插入后生成的标识列,可以使用SCOPE_IDENTITY()
sql命令,并使用ExecuteScalar()
获得命令的结果,例如:int id; using (SqlConnection connection = new SqlConnection(AppConstants.ConnectionString)) { string sql = @"INSERT INTO custom_customer (customer_name) VALUES (@name); SELECT SCOPE_IDENTITY();" using (SqlCommand command = new SqlCommand(sql)) { command.Parameters.Add(new SqlParameter("name", customer)); connection.Open(); id = (int) command.ExecuteScalar(); connection.Close(); } }
-
SQL语句忽略了where参数
2021-02-02 关注 0 浏览216 1答案
-
在一个SQL语句中检索列表的列表
2021-07-06 关注 0 浏览96 1答案
-
Java的SQL解析器库-检索SQL语句中存在的表名列表
2021-01-30 关注 0 浏览82 1答案
-
如何抑制单个SQL语句的列标题输出?
2021-02-02 关注 0 浏览83 1答案
-
使用未知名称/参数数量更新sql语句
2021-04-09 关注 0 浏览60 1答案
-
使用SQL语句进行分组检索时,为了去掉不满足条件的分组,应当
2022-05-11 关注 0 浏览14 1答案
-
为什么我们总是喜欢在SQL语句中使用参数?
2021-05-10 关注 0 浏览203 1答案
-
在SQL语句中,检索要去掉重复组的所有元组,则在SELECT中使用( )
2021-09-17 关注 0 浏览196 1答案
-
SQL语句-SQL矩阵
2021-05-20 关注 0 浏览217 1答案
-
并非在SQL语句中使用了所有参数(Python,MySQL)
2021-02-02 关注 0 浏览77 1答案