必须声明标量变量 - 用于填充DataGridView的SQL参数

时间:2017-11-19 18:08:54

标签: c# datagridview sqldataadapter

我发现了类似的问题,但没有一个答案对我有帮助或适用于我。

我正在使用Visual Studio 2013,C#和名为T-SQL的数据库引擎。

如果我用具体值替换参数,SQL命令就可以正常工作。但我需要那里的参数。

我收到此错误:

  

必须声明标量变量“@ Collection1”。

在这一行:

myydata.Fill(myytab);

无论我做什么,@Collection1都不想宣布。

string stringcommand = "select Name, Collection, Text from Card_List where Collection IN" +
                       "(select Shortcut from Collections where Collection Like @Collection1)";

SqlConnection myConnection = new SqlConnection(stringconnection);
SqlCommand myCommand = new SqlCommand(stringcommand, myConnection);

// Tried to declare parameter 5 times here, unsuccessfully
myCommand.Parameters.Add(new SqlParameter("Collection1", string1));
myCommand.Parameters.Add("@Collection1", SqlDbType.NVarChar).Value = string1;
myCommand.Parameters["@Collection1"].Value = string1;
myCommand.Parameters.AddWithValue("@Collection1", string1);
SqlParameter Param1 = myCommand.Parameters.Add("@Collection1", SqlDbType.NVarChar);
Param1.Value = string1;

SqlDataAdapter myydata = new SqlDataAdapter();
myydata.SelectCommand = new SqlCommand(stringcommand, myConnection);
myConnection.Open();
DataTable myytab = new DataTable();
myydata.Fill(myytab);
BindingSource bsour = new BindingSource();
bsour.DataSource = myytab;
dataGridView1.DataSource = bsour;
myydata.Update(myytab);
myConnection.Close();

1 个答案:

答案 0 :(得分:1)

您希望设置的SqlCommand myCommand用作myydata.SelectCommand,例如:

myCommand.Parameters.Add(new SqlParameter("Collection1", string1));
myydata.SelectCommand = myCommand;

使用myydata.SelectCommand = new SqlCommand(stringcommand, myConnection);的方式,该命令在命令中有@Collection1,但如果没有附加任何参数,则会出现Must declare the scalar variable "@Collection1".错误。