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());
    }
}

Sql Server 2012必须声明标量变量异常

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);

当你添加一个参数时,你必须写下你的参数名,而不是你过滤的列名。