哈哈,这个我知道!!
查询表字段:
Use 数据库名称
Select Upper(TB1.Name) 表名,Upper(TB2.Name) 字段名,
Upper(TB3.Name) 字段类型,TB2.Length 字段长度,
TB2.IsNullable 是否为空,Upper(Tb5.Text) 默认值,TB4.步长,Tb4.初始值
From SysObjects TB1,SysColumns Tb2,SysTypes TB3,SysComments Tb5,
(select distinct Upper(TB1.Table_Name) 表名, Upper(TB3.Name) 字段名,
 IDENT_INCR(Table_Name) 步长, IDENT_SEED(Table_Name) 初始值
From InFormation_Schema.Tables TB1,SysObjects TB2,SysColumns TB3
Where Table_Name <> 'Dtproperties'
And TB1.Table_Name!=Tb2.Name
And TB2.ID=TB3.ID
And TB3.Name<>'ID'And Tb3.Colstat=1
And IDENT_INCR(Table_Name) Is Not Null
And IDENT_SEED(Table_Name) Is Not Null) TB4
Where Tb1.Name Not Like 'Sys%'
And Tb1.XType='U'
And Tb1.Name !='Dtproperties'
And TB1.ID=TB2.ID
And Tb2.XType= Tb3.XType
And Tb2.XUserType=Tb3.XUserType
And TB2.CDefault *= TB5.Id
And Tb4.表名=*TB1.Name
And Tb4.字段名=*TB2.Name
Order By TB1.Name查询自增长信息:
select distinct Upper(TB1.Table_Name) 表名, Upper(TB3.Name) 字段名,
 IDENT_INCR(Table_Name) 步长, IDENT_SEED(Table_Name) 初始值
From InFormation_Schema.Tables TB1,SysObjects TB2,SysColumns TB3
Where Table_Name <> 'Dtproperties'
And TB1.Table_Name!=Tb2.Name
And TB2.ID=TB3.ID
And TB3.Name<>'ID'
And Tb3.Colstat=1
And IDENT_INCR(Table_Name) Is Not Null
And IDENT_SEED(Table_Name) Is Not Null

解决方案 »

  1.   

    用ADO就可以了,如果用ADOX就更爽了!
      

  2.   

    我编了个打印数据库结构的程序,能把MS SQL的数据库表打印出来哟!!
      

  3.   

    TmpDS.CommandText := 'Select * from '+TableName;
            TmpDS.FieldDefs.Update;
            for i:=0 to TmpDS.FieldDefs.Count -1 do
            begin
              New(FieldInfo);
              FieldInfo.FieldName := TmpDS.FieldDefs[i].Name;
              FieldInfo.LinkTable := TableName;
              FieldInfo.FieldType := TmpDS.FieldDefs[i].DataType;
              FieldInfo.Caption := TmpDS.FieldDefs[i].Name;
              ...
             end;
          except
            on E:EDatabaseError do
            begin
            ShowMessage(E.Message);
            TmpDS.Free;
            Exit;
            end;
          end;