请教关于comboBox 显示 access 数据库 表名的问题
请教各位,我在winform中添加一个comboBox1,想使其下拉列表显示现有的ACCESS数据库db1.mdb的所有创建表的表名。选择后,已创建的 datagridview1 显示相应选择的数据库内容。求实现方法......
[解决办法]
创建表的表名
select [Name] from MSysObjects where type=1
查询出来绑定即可
[解决办法]
datagridview1 在里面有个绑定选项 绑定你要查询的列
用select 列名 from 表名 where 加条件查询
查询出来绑定的值 实现动态添加
[解决办法]
Access2003
工具 -> 选项 -> 视图 -> 勾选隐藏对象、系统对象
工具 -> 安全 -> 用户与组的权限->选择MSysObjects->勾选读取数据
Access2007
Office按钮->Access选项->当前数据库->导航选项->勾选显示系统对象->
数据库工具->用户和权限->用户与组权限->对象名称->选择MSysObjects->勾选读取数据
//将Access中的表名绑定到下拉框 private void Bind2ComboBox() { //Access2003连接字符串 string conStr = "Provider=Microsoft.Jet.OleDb.4.0;"; conStr += @"Data Source=D:\Assisment.mdb;"; conStr += "Jet OleDb:DataBase Password='123456';"; //创建数据库连接 OleDbConnection con = new OleDbConnection(conStr); //查询access所有用户表名的查询语句 string sequal = "select id,name from MSysObjects where type=1 and flags = 0"; DataSet ds = new DataSet(); try { con.Open(); OleDbDataAdapter oda = new OleDbDataAdapter(sequal, con); oda.Fill(ds); //将表名绑定到下拉框 this.comboBox1.DataSource = ds.Tables[0]; this.comboBox1.DisplayMember = "name"; this.comboBox1.ValueMember = "id"; } catch (Exception ex) { throw new Exception(ex.Message); } finally { con.Close(); } } //下拉框选择变化事件 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { string conStr = "Provider=Microsoft.Jet.OleDb.4.0;"; conStr += @"Data Source=D:\Assisment.mdb;"; conStr += "Jet OleDb:DataBase Password='123456';"; //创建数据库连接 OleDbConnection con = new OleDbConnection(conStr); //解析下拉框选中的表名 string tableName = ((DataRowView)this.comboBox1.SelectedItem).Row.ItemArray[1].ToString(); //查询access所有用户表名的查询语句 string sequal = "select * from "+tableName+""; DataSet ds = new DataSet(); try { con.Open(); OleDbDataAdapter oda = new OleDbDataAdapter(sequal, con); oda.Fill(ds); //绑定表格 this.dataGridView1.DataSource = ds.Tables[0]; } catch (Exception ex) { throw new Exception(ex.Message); } finally { con.Close(); } }
[解决办法]
Access2003
工具 -> 选项 -> 视图 -> 勾选隐藏对象、系统对象
工具 -> 安全 -> 用户与组的权限->选择MSysObjects->勾选读取数据
Access2007
Office按钮->Access选项->当前数据库->导航选项->勾选显示系统对象->
数据库工具->用户和权限->用户与组权限->对象名称->选择MSysObjects->勾选读取数据
这点很重要,要不然是取不到的,这个东西我做过,然后再用3楼的方法可以的
[解决办法]
获取所有表压根不需要那么复杂,你可以参考下:
http://blog.163.com/ysli_195/blog/static/4205419420111022433475/
这样得到的就是表信息就存放在datatable里