C# c如何在Sql查询中使用From子句的Combobox.Value
你能帮我处理一个很奇怪的请求吗 我正在构建一个表单来表示datagridview中的表。 当我在组合框中选择不同的值时,我想更改绑定到datagridview的数据。我将事件绑定到一个按钮上 我在运行代码时出错: System.Data.dll中发生类型为“System.Data.OleDb.OLEDBEException”的未处理异常。其他信息:查询中出现语法错误。不完整的查询子句。 我的代码如下C# c如何在Sql查询中使用From子句的Combobox.Value,c#,select,datagridview,combobox,oledb,C#,Select,Datagridview,Combobox,Oledb,你能帮我处理一个很奇怪的请求吗 我正在构建一个表单来表示datagridview中的表。 当我在组合框中选择不同的值时,我想更改绑定到datagridview的数据。我将事件绑定到一个按钮上 我在运行代码时出错: System.Data.dll中发生类型为“System.Data.OleDb.OLEDBEException”的未处理异常。其他信息:查询中出现语法错误。不完整的查询子句。 我的代码如下 private void Ok_button3_Click(object sender, Ev
private void Ok_button3_Click(object sender, EventArgs e)
{
OleDbConnection con = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = E:\database.accdb; Persist Security Info =False;");
OleDbCommand cmd = new OleDbCommand("Select * From @name ", con);
cmd.Parameters.AddWithValue("@name", comboBox1.SelectedValue);
cmd.CommandType = CommandType.Text;
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
dt.TableName = "Project";
dataGridView1.DataSource = dt;
}
如果使用数据绑定项,请使用comboBox1.SelectedValue。如果使用未绑定模式,请使用comboBox1.SelectedItem
private void Ok_button3_Click(object sender, EventArgs e)
{
OleDbConnection con = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = E:\database.accdb; Persist Security Info =False;");
//OleDbCommand cmd = new OleDbCommand("Select * From " + comboBox1.SelectedValue.ToString(), con);
OleDbCommand cmd = new OleDbCommand("Select * From " + comboBox1.SelectedItem.ToString(), con);
cmd.CommandType = CommandType.Text;
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
dt.TableName = "Project";
dataGridView1.DataSource = dt;
}
但不是这样的建议。您可以使用存储过程 如果使用数据绑定项,则使用comboBox1.SelectedValue。如果使用未绑定模式,请使用comboBox1.SelectedItem
private void Ok_button3_Click(object sender, EventArgs e)
{
OleDbConnection con = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = E:\database.accdb; Persist Security Info =False;");
//OleDbCommand cmd = new OleDbCommand("Select * From " + comboBox1.SelectedValue.ToString(), con);
OleDbCommand cmd = new OleDbCommand("Select * From " + comboBox1.SelectedItem.ToString(), con);
cmd.CommandType = CommandType.Text;
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
dt.TableName = "Project";
dataGridView1.DataSource = dt;
}
但不是这样的建议。您可以使用存储过程 不能将表名作为参数传递。您可以根据组合框中的值选择构建sql。用此代码替换您的代码并检查
private void Ok_button3_Click(object sender, EventArgs e)
{
OleDbConnection con = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = E:\database.accdb; Persist Security Info =False;");
OleDbCommand cmd = new OleDbCommand(String.Concat("Select * From ",comboBox1.SelectedValue), con);
cmd.CommandType = CommandType.Text;
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
dt.TableName = "Project";
dataGridView1.DataSource = dt;
}
不能将表名作为参数传递。您可以根据组合框中的值选择构建sql。用此代码替换您的代码并检查
private void Ok_button3_Click(object sender, EventArgs e)
{
OleDbConnection con = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = E:\database.accdb; Persist Security Info =False;");
OleDbCommand cmd = new OleDbCommand(String.Concat("Select * From ",comboBox1.SelectedValue), con);
cmd.CommandType = CommandType.Text;
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
dt.TableName = "Project";
dataGridView1.DataSource = dt;
}
试试这个:
试试这个:
此代码将帮助您:
private void Ok_button3_Click(object sender, EventArgs e)
{
OleDbConnection con = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = E:\database.accdb; Persist Security Info =False;");
OleDbCommand cmd = new OleDbCommand(String.Concat("Select * From ",comboBox1.Text), con);
cmd.CommandType = CommandType.Text;
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
dt.TableName = "Project";
dataGridView1.DataSource = dt;
}
此代码将帮助您:
private void Ok_button3_Click(object sender, EventArgs e)
{
OleDbConnection con = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = E:\database.accdb; Persist Security Info =False;");
OleDbCommand cmd = new OleDbCommand(String.Concat("Select * From ",comboBox1.Text), con);
cmd.CommandType = CommandType.Text;
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
dt.TableName = "Project";
dataGridView1.DataSource = dt;
}
将comboBox1.ValueMember更改为comboBox1.selectedvalue谢谢您的回复。我已经做了更改,但仍然遇到相同的错误您不能将表名用作SQL参数。无论如何,我可以从组合框中更改数据源?如果使用白名单,则没有风险。定义存储有效表名的数组或字典。使用combobox索引或值查找表名。将comboBox1.ValueMember更改为comboBox1.SelectedValue感谢您的回复。我已经做了更改,但仍然遇到相同的错误您不能将表名用作SQL参数。无论如何,我可以从组合框中更改数据源?如果使用白名单,则没有风险。定义存储有效表名的数组或字典。使用组合框索引或值来查找表名。非常感谢,这非常有帮助。我会努力让它做我想做的,但这让我走上了正确的轨道。会投票但没有代表:非常感谢,这帮了大忙。我会努力让它做我想做的,但这让我走上了正确的轨道。将投票,但没有代表: