Sql Server 2012必须声明标量变量异常
本文关键字:标量 变量 异常 声明 Server 2012 Sql | 更新日期: 2023-09-27 17:53:33
我正在使用Visual Studio 2013,我的数据库是MSSQL 2012。我已经连接了我的Windows窗体c#应用程序到数据库。我面临的问题是,当我输入搜索词并调用搜索方法时,它说Must Declare Scalar Variable @id
但是我已经申报过了。这是我的代码
public void simInfo(long id,DataGridView dataGridView)
{
try {
SqlConnection connection = new SqlConnection(@"//connect string here");
connection.Open();
SqlCommand searchQuery = new SqlCommand(
"select * from [Sim] where simOwnerId=@id",connection);
searchQuery.Parameters.Add("@simOwnerId", id);
using (SqlDataReader reader = searchQuery.ExecuteReader()) {
DataTable dt = new DataTable();
dt.Load(reader);
dataGridView.AutoGenerateColumns = true;
dataGridView.DataSource = dt;
dataGridView.Refresh();
}
} catch (SqlException exception) {
MessageBox.Show(exception.ToString());
}
}
SqlCommand searchQuery = new SqlCommand("select * from [Sim] where simOwnerId=@id",connection);
你在这里使用了一个参数如果@id
。但是没有@id
参数。相反,您将id
的值分配给参数"@simOwnerId"
。
searchQuery.Parameters.Add("@simOwnerId", id);
您可以将查询更改为
SqlCommand searchQuery = new SqlCommand("select * from [Sim] where simOwnerId=@simOwnerId",connection);
或者修改参数名:
searchQuery.Parameters.Add("@id", id);
您需要将SQL参数更新为@id
:
searchQuery.Parameters.Add("@id", id);
这是因为在您的查询中,您只有@id
参数而没有@simOwnerId
试试:
searchQuery.Parameters.Add("@id", id);
不是searchQuery.Parameters.Add("@simOwnerId", id);
使用
searchQuery.Parameters.Add("@id", id);
代替
searchQuery.Parameters.Add("@simOwnerId", id);
当你添加一个参数时,你必须写下你的参数名,而不是你过滤的列名。