查询出Access中用户建立的数据表,及表中的字段和字段类型 和主键等信息,谢谢了
解决方案 »
- c#里面如何创建工作者线程,请高手帮忙写写代码,小弟菜鸟一只
- 为什么我的程序发给别人不行呢?
- hashtable来作为Gridview数据源绑定是的问题
- 我的WINFORM调用水晶报表,水晶报表调用的ORACLE9I连接。报错如下文。
- webBrowser打开网页弹出js的confirm()或alert()窗口怎么关闭?
- DataGrid超难的问题~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 为什么前台有这些控件 但是后台提示这些控件不存在
- private CookieCollection oCookies如何清除其中的Cookies项
- 用SqlCommander调用存储过程时如果有多个参数,该怎样写?
- .net里MapObject控件使用问题
- 如何使用C#读取压缩包里面的文件信息.
- 混淆过的DLL如何查看源码
sql系统表的作用
sysaltfiles 主数据库 保存数据库的文件
syscharsets 主数据库 字符集与排序顺序
sysconfigures 主数据库 配置选项
syscurconfigs 主数据库 当前配置选项
sysdatabases 主数据库 服务器中的数据库
syslanguages 主数据库 语言
syslogins 主数据库 登陆帐号信息
sysoledbusers 主数据库 链接服务器登陆信息
sysprocesses 主数据库 进程
sysremotelogins主数据库 远程登录帐号
syscolumns 每个数据库 列
sysconstrains 每个数据库 限制
sysfilegroups 每个数据库 文件组
sysfiles 每个数据库 文件
sysforeignkeys 每个数据库 外部关键字
sysindexs 每个数据库 索引
sysmenbers 每个数据库 角色成员
sysobjects 每个数据库 所有数据库对象
syspermissions 每个数据库 权限
systypes 每个数据库 用户定义数据类型
sysusers 每个数据库 用户
MSysAccessXML
MSysACEs
MSysObjects
MSysQueries
MSysRelationships
sysaltfiles 主数据库 保存数据库的文件
syscharsets 主数据库 字符集与排序顺序
sysconfigures 主数据库 配置选项
syscurconfigs 主数据库 当前配置选项
sysdatabases 主数据库 服务器中的数据库
syslanguages 主数据库 语言
syslogins 主数据库 登陆帐号信息
sysoledbusers 主数据库 链接服务器登陆信息
sysprocesses 主数据库 进程
sysremotelogins主数据库 远程登录帐号
syscolumns 每个数据库 列
sysconstrains 每个数据库 限制
sysfilegroups 每个数据库 文件组
sysfiles 每个数据库 文件
sysforeignkeys 每个数据库 外部关键字
sysindexs 每个数据库 索引
sysmenbers 每个数据库 角色成员
sysobjects 每个数据库 所有数据库对象
syspermissions 每个数据库 权限
systypes 每个数据库 用户定义数据类型
sysusers 每个数据库 用户
----------------------------
多谢楼上的,
aCCESS 中没有这些系统表啊
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()];
}
}
多谢,怎么获得主键信息呢?
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)
{
............. }
}注意以上代码,你需要做一些补充,才可以编译的
它实现了,你所想要的很多东西