我正在尝试使用组合框下拉列表从数据库中显示datagridview中的表格,但我不知道该怎么做,我可以看到示例和解释如何只显示一个表格。
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection ();
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.4.0;Data Source=|DataDirectory|\\Manager.accdb;Persist Security Info=True";
OleDbCommand cmd = new OleDbCommand ("SELECT Emplyee, Tasks, Projects from Manager");
OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
adapter.Fill(dt, "Manager");
}
答案 0 :(得分:0)
没有名为"Provider=Microsoft.ACE.OLEDB.4.0;"
的提供商,您可能希望使用"Microsoft.ACE.OLEDB.12.0;"
然后,如果你想从组合框中选择的表名中读取所有数据,那么你的代码应该是这样的
string conString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=|DataDirectory|\\Manager.accdb;" +
"Persist Security Info=False";
string tableName = comboBox1.SelectedItem.ToString();
using(OleDbConnection conn = new OleDbConnection (conString))
using(OleDbCommand cmd = new OleDbCommand("SELECT * FROM [" + tableName + "]", conn))
{
con.Open();
using(OleDbDataAdapter adapter = new OleDbDataAdapter(cmd))
{
DataSet ds = new DataSet();
adapter.Fill(ds, tableName);
dataGridView.DataSource = ds.Tables[0];
}
}
请注意插入组合框中的桌面名称。通过字符串连接构建sql命令文本会产生非常危险的情况。不要让用户使用这些名称,而是自己选择它们。如果您有恶意用户,则可以安装Sql Injection attack