VB 列出SQL数据库中所有表及字段信息
程序思想:用Select name From sysobjects Where xtype = 'u'得到所有表,然后循环打开表,根据 Rs_Colums.Fields(I).Name 得到字段名, FieldType(Rs_Colums.Fields(I).Type) 得到字段类型, Rs_Colums.Fields(I).DefinedSize 宽度 由于Rs_Colums.Fields(I).Type返回类型是数字,程序中写了一个FieldType函数转化成中文类型。
Private Sub Command1_Click()DimCnAsNewADODB.Connection
DimRs_TableAsNewADODB.Recordset
DimRs_ColumsAsNewADODB.Recordset
WithCn '定义连接
.CursorLocation=adUseClient
.Provider="sqloledb"
.Properties("DataSource").Value="LIHG"
.Properties("InitialCatalog").Value="NorthWind"
.Properties("UserID")="sa"
.Properties("Password")="sa"
.Properties("prompt")=adPromptNever
.ConnectionTimeout=15
.Open
If.State=adStateOpenThen
Rs_Table.CursorLocation=adUseClient '得到所有表名
Rs_Table.Open"SelectnameFromsysobjectsWherextype='u'",Cn,adOpenDynamic,adLockReadOnly
Rs_Table.MoveFirst
DoWhileNotRs_Table.EOF
Debug.PrintRs_Table.Fields("name")
Rs_Colums.CursorLocation=adUseClient
Rs_Colums.Open"selecttop1*from["&Rs_Table.Fields("name")&"]",Cn,adOpenStatic,adLockReadOnly
ForI=0ToRs_Colums.Fields.Count-1 '循环所有列
Debug.PrintRs_Colums.Fields(I).Name '字段名
Debug.PrintFieldType(Rs_Colums.Fields(I).Type) '字段类型
Debug.PrintRs_Colums.Fields(I).DefinedSize '宽度
Next
Rs_Colums.Close
Rs_Table.MoveNext
Loop
Rs_Table.Close
SetRs_Colums=Nothing
SetRs_Table=Nothing
Else
MsgBox"数据库连接失败,请找系统管理员进行检查!",16,cProgramName
End
EndIf
EndWith
EndSub
'*********************************************************
'*名称:FieldType
'*功能:返回字段类型
'*用法:FieldType(nTypeasinteger)
'*********************************************************
FunctionFieldType(nTypeAsInteger)AsString
SelectCasenType
Case128
FieldType="BINARY"
Case11
FieldType="BIT"
Case129
FieldType="CHAR"
Case135
FieldType="DATETIME"
Case131
FieldType="DECIMAL"
Case5
FieldType="FLOAT"
Case205
FieldType="IMAGE"
Case3
FieldType="INT"
Case6
FieldType="MONEY"
Case130
FieldType="NCHAR"
Case203
FieldType="NTEXT"
Case131
FieldType="NUMERIC"
Case202
FieldType="NVARCHAR"
Case4
FieldType="REAL"
Case135
FieldType="SMALLDATETIME"
Case2
FieldType="SMALLMONEY"
Case6
FieldType="TEXT"
Case201
FieldType="TIMESTAMP"
Case128
FieldType="TINYINT"
Case17
FieldType="UNIQUEIDENTIFIER"
Case72
FieldType="VARBINARY"
Case204
FieldType="VARCHAR"
Case200
FieldType=""
EndSelect
End Function
此程序只是一个雏形,可以在此基础上开发成一个工具使用
本程序在:VB6.0 ,SQLSERVER2000下运行通过
注程序中须引用ActiveXDataObjects(ADO)