home *** CD-ROM | disk | FTP | other *** search
/ Software Collection (I) / TOOLS.iso / b18 / 1.img / EXUTILS.BA@ / EXUTILS.bin
Encoding:
Text File  |  1992-09-15  |  4.3 KB  |  130 lines

  1.  
  2. 'EXUTILS.BAS -- Example demonstrating utility fuctions for BASIC DB-LIBRARY.
  3.  
  4. 'Copyright (c) 1990 by Microsoft Corp.  All Rights Reserved.
  5.  
  6.  
  7. '$INCLUDE: 'sql.bi'
  8.  
  9. 'Type definition used by SqlGetTableInfo% and SqlSendQuery%.
  10. TYPE ColumnData
  11.     Name AS STRING * 30
  12.     Type AS INTEGER
  13.     Length AS LONG
  14.     ServerType AS STRING * 13
  15. END TYPE
  16.  
  17. DECLARE FUNCTION SqlOpenConnection& (Server$, LoginID$, Passwd$, Workstation$, Application$)
  18. DECLARE FUNCTION SqlGetTableInfo% (SqlConn&, Database$, Table$, Column() AS ColumnData, ColCount%)
  19. DECLARE FUNCTION SqlSendQuery% (SqlConn&, Query$, Column() AS ColumnData, Results() AS STRING, RowCount%, ColCount%)
  20. DECLARE FUNCTION SqlServType$ (SqlType%)
  21.  
  22. 'Allocate the arrays dynamically so they can be redimensioned.
  23. REDIM Column(0) AS ColumnData
  24. REDIM Results(0, 0) AS STRING
  25.  
  26. MemLeft& = SETMEM(-16384)   'Reserve 16K of heap.
  27. STACK 8192                  'Reserve 8K of stack space.
  28.  
  29. IF SqlInit$ = "" THEN
  30.     PRINT "Can't start BASIC DB-LIBRARY."
  31.     END
  32. END IF
  33.  
  34. 'Demonstrate use of SqlOpenConnection&.
  35. PRINT
  36. LINE INPUT "Enter server name: "; Server$
  37. LINE INPUT "Enter login ID: "; LoginID$
  38. LINE INPUT "Enter password: "; Passwd$
  39. SqlConn& = SqlOpenConnection&(Server$, LoginID$, Passwd$, "MACHINE", "BASIC")
  40.  
  41. DO WHILE SqlConn&
  42.  
  43.     'Demonstrate use of SqlGetTableInfo%.
  44.     PRINT
  45.     LINE INPUT "Enter database name: "; Database$
  46.     LINE INPUT "Enter table name: "; Table$
  47.     IF Table$ = "" THEN EXIT DO
  48.     IF SqlGetTableInfo%(SqlConn&, Database$, Table$, Column(), ColCount%) = FAIL THEN EXIT DO
  49.     PRINT : PRINT "Name:"; TAB(31); "Type:", "Length:", "Server Type:"
  50.     FOR c% = 1 TO ColCount%
  51.         PRINT Column(c%).Name; Column(c%).Type,
  52.         PRINT Column(c%).Length, Column(c%).ServerType
  53.     NEXT c%
  54.  
  55.     'Demonstrate use of SqlSendQuery%.
  56.     IF LEN(Database$) > 0 THEN Database$ = Database$ + ".."
  57.     Query$ = "SELECT * FROM " + Database$ + Table$
  58.     PRINT : PRINT "Sending query:  "; Query$: PRINT
  59.     Result% = SqlSendQuery%(SqlConn&, Query$, Column(), Results(), RowCount%, ColCount%)
  60.     IF Result% = FAIL THEN EXIT DO
  61.  
  62.     'Process data in the Results array until SqlSendQuery% returns all rows.
  63.     DO
  64.         PRINT RowCount%; "rows, each with"; ColCount%;
  65.         PRINT "columns, were returned in the Results array."
  66.         IF Result% <> MORE.ROWS THEN EXIT DO
  67.         Result% = SqlSendQuery%(SqlConn&, "", Column(), Results(), RowCount%, ColCount%)
  68.     LOOP
  69.  
  70. LOOP
  71.  
  72. CALL SqlExit
  73. END
  74.  
  75.  
  76. 'Sample Output
  77. '
  78. 'Enter server name: server
  79. 'Enter login ID: loginid
  80. 'Enter password: passwd
  81. '
  82. 'Msg No.: 5701  Severity:  2  Level:  0
  83. 'Message: Changed database context from 'master' to 'master'.
  84. '
  85. 'Enter database name: pubs
  86. 'Enter table name: titles
  87. '
  88. 'Name:                         Type:       Length:       Server Type:
  89. 'title_id                       39          6            varchar
  90. 'title                          39          80           varchar
  91. 'type                           47          12           char
  92. 'pub_id                         39          4            varchar
  93. 'price                          110         8            money-null
  94. 'advance                        110         8            money-null
  95. 'royalty                        38          4            integer-null
  96. 'ytd_sales                      38          4            integer-null
  97. 'notes                          39          200          varchar
  98. 'pubdate                        61          8            datetime
  99. '
  100. 'Sending query:  SELECT * FROM pubs..titles
  101. '
  102. ' 18 rows, each with 10 columns, were returned in the Results array.
  103. '
  104. 'Enter database name:
  105. 'Enter table name:
  106. '
  107.  
  108. 'User-defined handlers.  BASIC DB-LIBRARY will call these procedures if
  109. 'there is an error or a message from the server.
  110. '
  111. FUNCTION UserSqlErrorHandler% (SqlConn&, State%, DbErr%, OsErr%, DbErrStr$, OsErrStr$)
  112.     PRINT
  113.     IF SqlDead%(SqlConn&) THEN
  114.         PRINT "Connection to SQL Server failed."
  115.         UserSqlErrorHandler% = INTEXIT
  116.         EXIT FUNCTION
  117.     END IF
  118.     PRINT "State: "; State%; " Error No: "; DbErr%; " OS Error: "; OsErr%
  119.     PRINT "DB-LIBRARY Error: "; DbErrStr$
  120.     IF OsErr% <> DBNOERR THEN PRINT "Operating-System Error: "; OsErrStr$
  121.     UserSqlErrorHandler% = INTCANCEL
  122. END FUNCTION
  123.  
  124. SUB UserSqlMsgHandler (SqlConn&, MsgNo&, Severity%, Level%, Msg$)
  125.     PRINT
  126.     PRINT "Msg No.:"; MsgNo&; " Severity: "; Severity%; " Level: "; Level%
  127.     PRINT "Message: "; Msg$
  128. END SUB
  129.  
  130.