home *** CD-ROM | disk | FTP | other *** search
-
- 'EXUTILS.BAS -- Example demonstrating utility fuctions for BASIC DB-LIBRARY.
-
- 'Copyright (c) 1990 by Microsoft Corp. All Rights Reserved.
-
-
- '$INCLUDE: 'sql.bi'
-
- 'Type definition used by SqlGetTableInfo% and SqlSendQuery%.
- TYPE ColumnData
- Name AS STRING * 30
- Type AS INTEGER
- Length AS LONG
- ServerType AS STRING * 13
- END TYPE
-
- DECLARE FUNCTION SqlOpenConnection& (Server$, LoginID$, Passwd$, Workstation$, Application$)
- DECLARE FUNCTION SqlGetTableInfo% (SqlConn&, Database$, Table$, Column() AS ColumnData, ColCount%)
- DECLARE FUNCTION SqlSendQuery% (SqlConn&, Query$, Column() AS ColumnData, Results() AS STRING, RowCount%, ColCount%)
- DECLARE FUNCTION SqlServType$ (SqlType%)
-
- 'Allocate the arrays dynamically so they can be redimensioned.
- REDIM Column(0) AS ColumnData
- REDIM Results(0, 0) AS STRING
-
- MemLeft& = SETMEM(-16384) 'Reserve 16K of heap.
- STACK 8192 'Reserve 8K of stack space.
-
- IF SqlInit$ = "" THEN
- PRINT "Can't start BASIC DB-LIBRARY."
- END
- END IF
-
- 'Demonstrate use of SqlOpenConnection&.
- PRINT
- LINE INPUT "Enter server name: "; Server$
- LINE INPUT "Enter login ID: "; LoginID$
- LINE INPUT "Enter password: "; Passwd$
- SqlConn& = SqlOpenConnection&(Server$, LoginID$, Passwd$, "MACHINE", "BASIC")
-
- DO WHILE SqlConn&
-
- 'Demonstrate use of SqlGetTableInfo%.
- PRINT
- LINE INPUT "Enter database name: "; Database$
- LINE INPUT "Enter table name: "; Table$
- IF Table$ = "" THEN EXIT DO
- IF SqlGetTableInfo%(SqlConn&, Database$, Table$, Column(), ColCount%) = FAIL THEN EXIT DO
- PRINT : PRINT "Name:"; TAB(31); "Type:", "Length:", "Server Type:"
- FOR c% = 1 TO ColCount%
- PRINT Column(c%).Name; Column(c%).Type,
- PRINT Column(c%).Length, Column(c%).ServerType
- NEXT c%
-
- 'Demonstrate use of SqlSendQuery%.
- IF LEN(Database$) > 0 THEN Database$ = Database$ + ".."
- Query$ = "SELECT * FROM " + Database$ + Table$
- PRINT : PRINT "Sending query: "; Query$: PRINT
- Result% = SqlSendQuery%(SqlConn&, Query$, Column(), Results(), RowCount%, ColCount%)
- IF Result% = FAIL THEN EXIT DO
-
- 'Process data in the Results array until SqlSendQuery% returns all rows.
- DO
- PRINT RowCount%; "rows, each with"; ColCount%;
- PRINT "columns, were returned in the Results array."
- IF Result% <> MORE.ROWS THEN EXIT DO
- Result% = SqlSendQuery%(SqlConn&, "", Column(), Results(), RowCount%, ColCount%)
- LOOP
-
- LOOP
-
- CALL SqlExit
- END
-
-
- 'Sample Output
- '
- 'Enter server name: server
- 'Enter login ID: loginid
- 'Enter password: passwd
- '
- 'Msg No.: 5701 Severity: 2 Level: 0
- 'Message: Changed database context from 'master' to 'master'.
- '
- 'Enter database name: pubs
- 'Enter table name: titles
- '
- 'Name: Type: Length: Server Type:
- 'title_id 39 6 varchar
- 'title 39 80 varchar
- 'type 47 12 char
- 'pub_id 39 4 varchar
- 'price 110 8 money-null
- 'advance 110 8 money-null
- 'royalty 38 4 integer-null
- 'ytd_sales 38 4 integer-null
- 'notes 39 200 varchar
- 'pubdate 61 8 datetime
- '
- 'Sending query: SELECT * FROM pubs..titles
- '
- ' 18 rows, each with 10 columns, were returned in the Results array.
- '
- 'Enter database name:
- 'Enter table name:
- '
-
- 'User-defined handlers. BASIC DB-LIBRARY will call these procedures if
- 'there is an error or a message from the server.
- '
- FUNCTION UserSqlErrorHandler% (SqlConn&, State%, DbErr%, OsErr%, DbErrStr$, OsErrStr$)
- PRINT
- IF SqlDead%(SqlConn&) THEN
- PRINT "Connection to SQL Server failed."
- UserSqlErrorHandler% = INTEXIT
- EXIT FUNCTION
- END IF
- PRINT "State: "; State%; " Error No: "; DbErr%; " OS Error: "; OsErr%
- PRINT "DB-LIBRARY Error: "; DbErrStr$
- IF OsErr% <> DBNOERR THEN PRINT "Operating-System Error: "; OsErrStr$
- UserSqlErrorHandler% = INTCANCEL
- END FUNCTION
-
- SUB UserSqlMsgHandler (SqlConn&, MsgNo&, Severity%, Level%, Msg$)
- PRINT
- PRINT "Msg No.:"; MsgNo&; " Severity: "; Severity%; " Level: "; Level%
- PRINT "Message: "; Msg$
- END SUB
-
-