C# 必须声明标量变量

C# 必须声明标量变量,c#,sql,sql-server,C#,Sql,Sql Server,我这里遗漏了什么?我有一个错误,必须声明标量变量@Param实际上您在cmd2中声明了参数变量,但您在适配器1中调用了ssr 试试这个 private void button3_Click(object sender, EventArgs e) { string ssr; SqlConnection scr = new SqlConnection(@"Data Source=USER-PC\MSSQL;Initial Catalog=Highscore;I

我这里遗漏了什么?我有一个错误,必须声明标量变量@Param

实际上您在cmd2中声明了参数变量,但您在适配器1中调用了ssr

试试这个

private void button3_Click(object sender, EventArgs e)
    {
        string ssr;
        SqlConnection scr = new SqlConnection(@"Data Source=USER-PC\MSSQL;Initial Catalog=Highscore;Integrated Security=True");
        scr.Open();
        ssr = "Select Nume,Scor,DataInitiala,DataRecenta FROM Users where DataInitiala between @Param and @Param1 ";
        SqlCommand cmd2 = new SqlCommand(ssr, scr);
        cmd2.Parameters.AddWithValue("@Param", from.Text);
        cmd2.Parameters.AddWithValue("@Param1", to.Text);
        SqlDataAdapter adapter1 = new SqlDataAdapter(ssr, scr);
        DataSet ds1 = new DataSet();
        adapter1.Fill(ds1);
        dataGridView1.DataSource = ds1.Tables[0];
        dataGridView1.Refresh();  


    }

请参见以下查询:

private void button3_Click(object sender, EventArgs e)
    {
        string ssr;
        SqlConnection scr = new SqlConnection(@"Data Source=USER-PC\MSSQL;Initial Catalog=Highscore;Integrated Security=True");
        scr.Open();
        ssr = "Select Nume,Scor,DataInitiala,DataRecenta FROM Users where DataInitiala between @Param and @Param1 ";
        SqlCommand cmd2 = new SqlCommand(ssr, scr);
        cmd2.Parameters.AddWithValue("@Param", from.Text);
        cmd2.Parameters.AddWithValue("@Param1", to.Text);
        SqlDataAdapter adapter1 = new SqlDataAdapter();
        adapter1.SelectCommand = cmd2;
        DataSet ds1 = new DataSet();
        adapter1.Fill(ds1);
        dataGridView1.DataSource = ds1.Tables[0];
        dataGridView1.Refresh();         
    }

.Text的
值是什么?如果您处理的是日期/时间/时间戳,则该值由用户在应用程序中输入(它是一个日期)。另外,在包含到查询中之前,您应该将参数转换为正确的类型,不要只假设文本值是正确的。不过,这并不一定能解决您的问题……我在新的SqlDataAdapter(cmd2,scr)上遇到了2个错误:1.与“System.Data.SqlClient.SqlAdapter.SqlDataAdapter(string,System.Data.SqlClient.SqlConnection)”匹配的最佳重载方法具有一些无效参数。2Argument1:无法从SystemData.SqlClient.SqlCommand转换为StringCommand,而此代码可能会回答此问题,提供有关如何和/或为什么解决此问题的其他上下文将提高答案的长期价值。
private void button3_Click(object sender, EventArgs e)
    {
        string ssr;
        SqlConnection scr = new SqlConnection(@"Data Source=USER-PC\MSSQL;Initial Catalog=Highscore;Integrated Security=True");
        scr.Open();
        ssr = "Select Nume,Scor,DataInitiala,DataRecenta FROM Users where DataInitiala between @Param and @Param1 ";
        SqlCommand cmd2 = new SqlCommand(ssr, scr);
        cmd2.Parameters.AddWithValue("@Param", from.Text);
        cmd2.Parameters.AddWithValue("@Param1", to.Text);
        SqlDataAdapter adapter1 = new SqlDataAdapter();
        adapter1.SelectCommand = cmd2;
        DataSet ds1 = new DataSet();
        adapter1.Fill(ds1);
        dataGridView1.DataSource = ds1.Tables[0];
        dataGridView1.Refresh();         
    }