我正在使用包含两列{@ 1}}和customer_id
的表格。
customer_name
是一个简单的customer_name
,varchar
是一个自动递增的主键。
我想使用我的C#应用程序插入customer_id
,并检索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);
但后来我被困住了。我该如何从查询中获取值?
答案 0 :(得分:3)
您可以使用ExecuteScalar
代替
int id = (int) command.ExecuteScalar();
答案 1 :(得分:3)
首先,使用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();
}
}
答案 2 :(得分:2)
您需要致电ExecuteScalar()
以获取ID
值:
int ID= (int) Command.ExecuteScalar();
答案 3 :(得分:1)
using (SqlConnection connection = new SqlConnection(AppConstants.ConnectionString))
using (SqlCommand command = new SqlCommand("INSERT INTO custom_customer (customer_name) VALUES (@name);SELECT SCOPE_IDENTITY();"))
{
command.Parameters.Add(new SqlParameter("name", customer));
connection.Open();
int id= (int)Command.ExecuteScalar();
}