首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请问关于comboBox 显示 access 数据库 表名的有关问题

2012-04-14 
请教关于comboBox 显示 access 数据库 表名的问题请教各位,我在winform中添加一个comboBox1,想使其下拉列

请教关于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->勾选读取数据

C# code
       //将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里

热点排行