Posted on 2007-03-03 00:42
桦林 阅读(274)
评论(1)
编辑
收藏
网摘 所属分类:
SQl DataBase About...
获取数据库表名和字段 |
sqlserver中各个系统表的作用 sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库 字符集与排序顺序 sysconfigures 主数据库 配置选项 syscurconfigs 主数据库 当前配置选项 sysdatabases 主数据库 服务器中的数据库 syslanguages 主数据库 语言 syslogins 主数据库 登陆帐号信息 sysoledbusers 主数据库 链接服务器登陆信息 sysprocesses 主数据库 进程 sysremotelogins主数据库 远程登录帐号 syscolumns 每个数据库 列 sysconstrains 每个数据库 限制 sysfilegroups 每个数据库 文件组 sysfiles 每个数据库 文件 sysforeignkeys 每个数据库 外部关键字 sysindexs 每个数据库 索引 sysmenbers 每个数据库 角色成员 sysobjects 每个数据库 所有数据库对象 syspermissions 每个数据库 权限 systypes 每个数据库 用户定义数据类型 sysusers 每个数据库 用户 |
//
用什么方法可以得到一个表中所有的列名。SQl语句。
select 列名=name from syscolumns where id=object_id(N'要查的表名')
use gpStrudy
select name="name" from syscolumns where id=object_id(N'bookTable')
//这是从一段代码中考出来的,使用的是using System.Data.OleDb;
public int GetTableFields(String tableName,out String[] fields,out String[] fieldTypes)
{
try
{
OleDbCommand dc = m_OleDb.CreateCommand();//创建一个执行对象用于执行sql查询
dc.CommandText = "select * from " + tableName;
dc.Transaction = m_OleTrans;
OleDbDataReader dr = dc.ExecuteReader();//执行sql查询
//获取数据库的架构信息
DataTable schemaTable = dr.GetSchemaTable();
int fieldColumnCount = 0;
fields = new String[schemaTable.Rows.Count];
fieldTypes = new String[schemaTable.Rows.Count];
for(int i = 0;i < schemaTable.Columns.Count;i++)
{
if(schemaTable.Columns[i].ColumnName.IndexOf("ColumnName") >= 0)
{
//获取字段名称
for(int k = 0;k < schemaTable.Rows.Count;k++)
fields[k] = schemaTable.Rows[k].ItemArray[i].ToString();
fieldColumnCount++;
if(fieldColumnCount >= 2)
{
dr.Close();
dc.Dispose();
dr = null;
dc = null;
return schemaTable.Rows.Count;
}
}
else if(schemaTable.Columns[i].ColumnName.IndexOf("DataType") >= 0)
{
//获取字段类型
for(int k = 0;k < schemaTable.Rows.Count;k++)
fieldTypes[k] = schemaTable.Rows[k].ItemArray[i].ToString();
fieldColumnCount++;
if(fieldColumnCount >= 2)
{
dr.Close();
dc.Dispose();
dr = null;
dc = null;
return schemaTable.Rows.Count;
}
}
}
dr.Close();
dc.Dispose();
dr = null;
dc = null;
return 0;
}
catch(Exception ee)
{
fields = new String[1];
fieldTypes = new String[1];
m_ErrorString = "Ado_Application:GetTableFields:error:" + ee.Message;
return 0;
}
}Top
4 楼zhougaomin_007(风之力量) 回复于 2004-12-14 13:56:32 得分 4
//这是获取所有的表
public int GetAllTables(out String[] tables)
{
try
{
//获取数据库的架构信息
DataTable schemaTable = m_OleDb.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
new object[] {null, null, null, "TABLE"});
for(int i = 0;i < schemaTable.Columns.Count;i++)
if(schemaTable.Columns[i].ColumnName.IndexOf("TABLE_NAME") >= 0)
{
tables = new String[schemaTable.Rows.Count];
for(int k = 0;k < schemaTable.Rows.Count;k++)
tables[k] = (String)schemaTable.Rows[k].ItemArray[i];
return schemaTable.Rows.Count;
}
tables = new String[1];
return 0;
}
catch(Exception ee)
{
tables = new String[1];
m_ErrorString = "Ado_Application:GetAllTables:error:" + ee.Message;
return 0;
}
}Top
5 楼zhougaomin_007(风之力量) 回复于 2004-12-14 14:00:44 得分 4
以上代码使用oledb,需要提供连接字符串,比如:Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=Northwind;Data Source=localhost
该数据库连接字符串连的是本地的sql server2000中的
Northwind数据库