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)

相关推荐