在数据库中搜索
Search in the database
此消息表单显示 table 这些信息(ID、FROM、TO、TITLE、MESSAGE)。
我正在尝试搜索发送给特定用户的所有邮件。用户将在 Search_textBox
中输入他的姓名,然后它将过滤 table 以仅保留发给该用户的消息。
private void Search_button_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = cmd.CommandText = "Select * from MessagesTable where To =" + Search_textBox.Text;
cmd.Parameters.AddWithValue("@To", Search_textBox.Text);
DataSet dataSet = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dataSet);
dataGridView1.DataSource = dataSet.Tables[0];
}
我收到这个错误:
System.Data.SqlClient.SqlException: 'Invalid column name 'To'.'
“search_name”参数包含什么?消息?列名称?
您的查询是
Select * from MessagesTable where " + search_name + " = @From"
然后您将“search_name”指定为@From...的参数
所以我相信你输入的是“姓名”,你的查询现在看起来像这样:
Select * from MessagesTable where Name = 'Name';
您在此指定的 table 中没有任何名称列,如您所述。
您可以按如下方式更改。当然,如果我理解正确的话,你想通过从用户那里得到的输入在消息字段中进行搜索。
private void Search_button_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "Select * from MessagesTable where MESSAGE = @From";
cmd.Parameters.AddWithValue("@From", search_name);
DataSet dataSet = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dataSet);
dataGridView1.DataSource = dataSet.Tables[0];
}
尝试使用 To,因为“To”- 关键字 SQL:
cmd.CommandText = cmd.CommandText = "Select * from MessagesTable where [To] =" + Search_textBox.Text;
这是正确的
private void Search_button_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "Select * from MessagesTable where [To]= @To";
cmd.Parameters.AddWithValue("@To", Search_textBox.Text);
DataSet dataSet = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dataSet);
dataGridView1.DataSource = dataSet.Tables[0];
}
此消息表单显示 table 这些信息(ID、FROM、TO、TITLE、MESSAGE)。
我正在尝试搜索发送给特定用户的所有邮件。用户将在 Search_textBox
中输入他的姓名,然后它将过滤 table 以仅保留发给该用户的消息。
private void Search_button_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = cmd.CommandText = "Select * from MessagesTable where To =" + Search_textBox.Text;
cmd.Parameters.AddWithValue("@To", Search_textBox.Text);
DataSet dataSet = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dataSet);
dataGridView1.DataSource = dataSet.Tables[0];
}
我收到这个错误:
System.Data.SqlClient.SqlException: 'Invalid column name 'To'.'
“search_name”参数包含什么?消息?列名称?
您的查询是
Select * from MessagesTable where " + search_name + " = @From"
然后您将“search_name”指定为@From...的参数 所以我相信你输入的是“姓名”,你的查询现在看起来像这样:
Select * from MessagesTable where Name = 'Name';
您在此指定的 table 中没有任何名称列,如您所述。
您可以按如下方式更改。当然,如果我理解正确的话,你想通过从用户那里得到的输入在消息字段中进行搜索。
private void Search_button_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "Select * from MessagesTable where MESSAGE = @From";
cmd.Parameters.AddWithValue("@From", search_name);
DataSet dataSet = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dataSet);
dataGridView1.DataSource = dataSet.Tables[0];
}
尝试使用 To,因为“To”- 关键字 SQL:
cmd.CommandText = cmd.CommandText = "Select * from MessagesTable where [To] =" + Search_textBox.Text;
这是正确的
private void Search_button_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "Select * from MessagesTable where [To]= @To";
cmd.Parameters.AddWithValue("@To", Search_textBox.Text);
DataSet dataSet = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dataSet);
dataGridView1.DataSource = dataSet.Tables[0];
}