SQl查询数据库表名、表的列名

 

SQl查询数据库表名、表的列名
2007-09-10 12:20

Posted on 2007-03-03 00:42 桦林 阅读(274) 评论(1)   编辑   收藏 网摘 所属分类: SQl DataBase About...
--读取库中的所有表名
select name from sysobjects where xtype='u'

--读取指定表的所有列名
select name from syscolumns where id=(select max(id) from sysobjects where xtype='u' and name='表名')
获取数据库表名和字段

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数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值