有关ExecuteScalar的错误,我无法弄清楚

时间:2012-04-13 14:55:13

标签: c# sql-server

我正在使用visual C#编写一个程序,我将数据拉入DataGridView。这一切都很好,但是如果我之后尝试提取更多数据(我希望将数据放入textBox中),则会出现错误。

以下是我将数据拉入dataGridView的部分:

SqlConnection connect;
DataSet ds1 = new DataSet();
SqlDataAdapter da;

connect = new SqlConnection();
connect.ConnectionString = "Data Source=THEPC-PC\\SQLExpress;Initial Catalog=DataBase;Integrated Security=True";

string sql = "SELECT * FROM table WHERE column = '" + comboBox.Text + "'";
da = new SqlDataAdapter(sql, connect);
da.Fill(ds1, "table");
the_data_dataGridView.AutoGenerateColumns = false;
the_data_dataGridView.DataSource = ds1.Tables["table"];
connect.Open();
connect.Close();

以下代码是我正在尝试在上一个查询之后创建的下一个查询。并且它在第3行显示此错误,其中显示“ExecuteScalar”:

  

'string'不包含'ExecuteScalar'的定义,不包含   扩展方法'ExecuteScalar'接受类型的第一个参数   可以找到'string'(你是否错过了使用指令或者   装配参考?)

SqlCommand sql2 = new SqlCommand("SELECT COUNT(column) FROM table WHERE column = '" + comboBox.Text + "'", connect);
connect.Open();
int the_result = System.Convert.ToInt32(sql.ExecuteScalar());
the_result_textBox.Text = the_result.ToString();
connect.Close();

这两段代码在不同的表单中都可以正常工作。但显然不会一个接一个地工作。现在我确定我在这里做了一些非常愚蠢的事情但是无法弄明白。

3 个答案:

答案 0 :(得分:6)

那是因为sql是一个类型字符串。你在第一个例子中声明它。

string sql = "SELECT * FROM table WHERE column = '" + comboBox.Text + "'"; 

我想在sql2上调用ExecuteScalar。

答案 1 :(得分:0)

尝试:

int the_result = System.Convert.ToInt32(sql2.ExecuteScalar());

答案 2 :(得分:0)

可能想要这样做

sql2.ExecuteScalar()