1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| Procedure.l ParseDatabase(name.s,user.s,password.s)
; Parse Databases
dbDB = OpenDatabase(#PB_Any,name,user,password)
If dbDB
If DatabaseQuery(dbDB,"SHOW DATABASES")
*conn.DATABASE = NewList2(DATABASE)
While NextDatabaseRow(dbDB)
*db.DATABASE = AddElement2(*conn)
*db\name = GetDatabaseString(dbDB,0)
*db\tables = NewList2(TABLE)
; Parse Tables
dbTable = OpenDatabase(#PB_Any,name,user,password)
If dbTable
If DatabaseQuery(dbTable,"SHOW TABLES FROM " + *db\name)
While NextDatabaseRow(dbTable)
*table.TABLE = AddElement2(*db\tables)
*table\name = GetDatabaseString(dbTable,0)
*table\fields = NewList2(FIELD)
; Parse Fields
dbField = OpenDatabase(#PB_Any,name,user,password)
If dbField
If DatabaseQuery(dbField,"DESCRIBE " + *db\name + "." + *table\name)
While NextDatabaseRow(dbField)
*field.FIELD = AddElement2(*table\fields)
*field\name = GetDatabaseString(dbField,0)
*field\type = GetDatabaseString(dbField,1)
*field\null = GetDatabaseString(dbField,2)
*field\key = GetDatabaseString(dbField,3)
*field\def = GetDatabaseString(dbField,4)
*field\extra = GetDatabaseString(dbField,5)
Wend
EndIf
CloseDatabase(dbField)
EndIf
Wend
EndIf
CloseDatabase(dbTable)
EndIf
Wend
EndIf
CloseDatabase(dbDB)
EndIf
ProcedureReturn *conn
EndProcedure |
Partager