查询出Access中用户建立的数据表,及表中的字段和字段类型 和主键等信息,谢谢了

解决方案 »

  1.   

    sql里面有個系統表可以查出這些數據的,Access就不知道
      

  2.   

    SQL中查询用户建立的表select * from sysobjects where xtype = 'u' 
      

  3.   

    给你再贴点东西,或许有用.
    sql系统表的作用
    sysaltfiles    主数据库               保存数据库的文件
    syscharsets    主数据库               字符集与排序顺序
    sysconfigures  主数据库               配置选项
    syscurconfigs  主数据库               当前配置选项
    sysdatabases   主数据库               服务器中的数据库
    syslanguages   主数据库               语言
    syslogins      主数据库               登陆帐号信息
    sysoledbusers  主数据库               链接服务器登陆信息
    sysprocesses   主数据库               进程
    sysremotelogins主数据库               远程登录帐号
    syscolumns     每个数据库             列
    sysconstrains  每个数据库             限制
    sysfilegroups  每个数据库             文件组
    sysfiles       每个数据库             文件
    sysforeignkeys 每个数据库             外部关键字
    sysindexs      每个数据库             索引
    sysmenbers     每个数据库             角色成员
    sysobjects     每个数据库             所有数据库对象
    syspermissions 每个数据库             权限
    systypes       每个数据库             用户定义数据类型
    sysusers       每个数据库             用户
      

  4.   

    Access数据中有这样的系统表吗?
      

  5.   

    MSysAccessObjects
    MSysAccessXML
    MSysACEs
    MSysObjects
    MSysQueries
    MSysRelationships
      

  6.   

    sql系统表的作用
    sysaltfiles    主数据库               保存数据库的文件
    syscharsets    主数据库               字符集与排序顺序
    sysconfigures  主数据库               配置选项
    syscurconfigs  主数据库               当前配置选项
    sysdatabases   主数据库               服务器中的数据库
    syslanguages   主数据库               语言
    syslogins      主数据库               登陆帐号信息
    sysoledbusers  主数据库               链接服务器登陆信息
    sysprocesses   主数据库               进程
    sysremotelogins主数据库               远程登录帐号
    syscolumns     每个数据库             列
    sysconstrains  每个数据库             限制
    sysfilegroups  每个数据库             文件组
    sysfiles       每个数据库             文件
    sysforeignkeys 每个数据库             外部关键字
    sysindexs      每个数据库             索引
    sysmenbers     每个数据库             角色成员
    sysobjects     每个数据库             所有数据库对象
    syspermissions 每个数据库             权限
    systypes       每个数据库             用户定义数据类型
    sysusers       每个数据库             用户
    ----------------------------
    多谢楼上的,
    aCCESS 中没有这些系统表啊
      

  7.   

    怎么查询出Access中用户建立的数据表,及表中的字段和字段类型 和主键等信息,谢谢了?
      

  8.   

    // 表名数据集
    DataTable dtTable = new DataTable();
    // 每个表的字段数据集
    DataSet dsField = new DataSet();
    private void GetDBSchema()
    {
    try
    {
    string DBConn = @"Jet OLEDB:Database Password=;Data Source=c:\\db.mdb;User ID=;Password=;Provider='Microsoft.Jet.OLEDB.4.0'";
    OleDbConnection conn = new OleDbConnection(DBConn);
    conn.Open();
    // 得到所有表名信息
    dtTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] {null, null, null, "TABLE"});
    conn.Close();
    dsField = new DataSet();
    // 字段信息表
    DataTable tmpTable = new DataTable();
    tmpTable.Columns.Add("FName");
    tmpTable.Columns.Add("FType");
    // 取每个表的字段信息
    for(int i = 0 ; i < dtTable.Rows.Count ; i ++)
    {
    string sql = String.Format("SELECT * FROM {0}", dtTable.Rows[i]["TABLE_NAME"].ToString());
    DataSet ds = new DataSet();
    (new OleDbDataAdapter(sql, conn)).Fill(ds);
    DataTable tmpData = ds.Tables[0];
    ds.Tables.Clear();
    DataTable tmp = tmpTable.Clone();
    tmp.TableName = dtTable.Rows[i]["TABLE_NAME"].ToString();
    for(int j = 0 ; j < tmpData.Columns.Count ; j ++)
    {
    tmp.Rows.Add(new object[]{tmpData.Columns[j].ColumnName, tmpData.Columns[j].DataType.ToString()});
    }
    dsField.Tables.Add(tmp);
    }
    }
    catch
    {
    return;
    }
    }
    private void button1_Click(object sender, System.EventArgs e)
    {
    this.GetDBSchema();
    this.listBox1.DisplayMember = "TABLE_NAME";
    this.listBox1.ValueMember = "TABLE_NAME";
    this.listBox1.DataSource = dtTable;
    }private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    if(this.listBox1.SelectedValue != null)
    {
    this.dataGrid1.DataSource = dsField.Tables[this.listBox1.SelectedValue.ToString()];
    }
    }
      

  9.   

    access数据库的系统表是隐藏的系统表.在工具-->选项-->显示-->隐藏|系统..可以调出系统表.
      

  10.   

    TO chinasdp:
     多谢,怎么获得主键信息呢?
      

  11.   

    1.
    public IDataReader GetReader(string text,CommandType commandType,CommandBehavior behavior)
    {
    _selectCommand.CommandType=commandType;
    _selectCommand.CommandText=text;
    _connection.Open();
    return _selectCommand.ExecuteReader(behavior);
    }
    2.
    GetReader(ObjectName,CommandType.TableDirect,CommandBehavior.KeyInfo);
    DT = reader.GetSchemaTable();
    if step raise a exception do goto step 33.reader = MyDB.GetReader("select * from " + this.SchemaInfo.ObjectName,CommandType.Text,CommandBehavior.KeyInfo);
    DT = reader.GetSchemaTable();4.
    bool IsKey;
    foreach(DataRow rs in DT.Rows)
    {
    IsKey=bool.Parse(rs["IsKey"].ToString());// || bool.Parse(rs["IsUnique"].ToString());
    if(IsKey == true)
    {
    ............. }
    }注意以上代码,你需要做一些补充,才可以编译的
      

  12.   

    欢迎使用软件Shark DB Expert:http://www.cnblogs.com/Files/SharkXu/Shark%20DB%20Expert.zip,
    它实现了,你所想要的很多东西