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

  1.  
  2. 'EXAMPLE2.BAS -- This example illustrates the use of row buffering.
  3. 'It executes a query, stores all the returned rows (up to 100), and
  4. 'allows the user to examine data rows at random.
  5.  
  6. 'Copyright (c) 1990 by Microsoft Corp.  All rights reserved.
  7.  
  8.  
  9. '$INCLUDE: 'sql.bi'
  10.  
  11. MemLeft& = SETMEM(-16384)   'Reserve 16K of heap.
  12. STACK 8192                  'Reserve 8K of stack space.
  13.  
  14. 'Initialize BASIC DB-LIBRARY.
  15. IF SqlInit$ = "" THEN
  16.     PRINT "Can't start BASIC DB-LIBRARY."
  17.     END
  18. END IF
  19.  
  20. 'Get a login record and fill it in with the necessary information.
  21. Login& = SqlLogin&
  22. Result% = SqlSetLUser%(Login&, "loginid")
  23. Result% = SqlSetLPwd%(Login&, "passwd")
  24. Result% = SqlSetLApp%(Login&, "example")
  25.  
  26. 'Get a connection for communicating with SQL Server.
  27. SqlConn& = SqlOpen&(Login&, "server")
  28. IF SqlConn& = 0 THEN END
  29.  
  30. 'Put commands in the command buffer.
  31. cmd$ = "SELECT name, type, id, crdate FROM sysobjects WHERE type = 'S'"
  32. Result% = SqlCmd%(SqlConn&, cmd$)
  33.  
  34. 'Set row buffering to 100 rows and execute query.
  35. Result% = SqlSetOpt%(SqlConn&, SQLBUFFER, "100")
  36. Result% = SqlExec%(SqlConn&)
  37.  
  38. 'Read the rows into the row buffer.
  39. IF SqlResults(SqlConn&) = SUCCEED THEN
  40.     Result% = SqlNextRow%(SqlConn&)
  41.     DO UNTIL Result% = NO.MORE.ROWS
  42.     
  43.     'If row buffer is full, throw away the oldest row.
  44.     IF Result% = BUF.FULL THEN CALL sqlclrbuf(SqlConn&, 1)
  45.     Result% = SqlNextRow%(SqlConn&)
  46.  
  47.     LOOP
  48.  
  49.     'Print the column headers.
  50.     PRINT
  51.     PRINT "NAME"; TAB(28); "TYPE"; TAB(38); "DATE"; TAB(62); "ID"
  52.     PRINT "--------------------"; TAB(28); "----";
  53.     PRINT TAB(38); "-------------------"; TAB(62); "---"
  54.  
  55.     DO
  56.     PRINT
  57.     INPUT "Which row (0 to quit)"; RowNum&
  58.     IF RowNum& = 0 THEN EXIT DO
  59.  
  60.     'Print the requested row.
  61.     IF SqlGetRow%(SqlConn&, RowNum&) = NO.MORE.ROWS THEN
  62.         PRINT "That row is not in the table."
  63.     ELSE
  64.         ObjName$ = SqlData$(SqlConn&, 1)
  65.         Type$ = SqlData$(SqlConn&, 2)
  66.         Id$ = SqlData$(SqlConn&, 3)
  67.         CrDate$ = SqlData$(SqlConn&, 4)
  68.         PRINT ObjName$; TAB(29); Type$; TAB(38); CrDate$; TAB(62); Id$
  69.     END IF
  70.     LOOP
  71. END IF
  72.  
  73. 'Close connection and exit program.
  74. CALL SqlExit
  75. END
  76.  
  77.  
  78. 'Sample Output
  79. '
  80. 'Msg No.: 5701  Severity:  2  Level:  0
  81. 'Message: Changed database context from 'master' to 'master'.
  82. '
  83. 'NAME                       TYPE      DATE                    ID
  84. '--------------------       ----      -------------------     ---
  85. '
  86. 'Which row (0 to quit)? 2
  87. 'sysindexes                  S        Jan  1 1900 12:00AM     2
  88. '
  89. 'Which row (0 to quit)? 10
  90. 'sysusers                    S        Jan  1 1900 12:00AM     10
  91. '
  92. 'Which row (0 to quit)? 1
  93. 'sysobjects                  S        Jan  1 1900 12:00AM     1
  94. '
  95. 'Which row (0 to quit)? 0
  96.  
  97. 'User-defined handlers.  BASIC DB-LIBRARY will call these procedures if
  98. 'there is an error or a message from the server.
  99. '
  100. FUNCTION UserSqlErrorHandler% (SqlConn&, State%, DbErr%, OsErr%, DbErrStr$, OsErrStr$)
  101.     PRINT
  102.     IF SqlDead%(SqlConn&) THEN
  103.         PRINT "Connection to SQL Server failed."
  104.         UserSqlErrorHandler% = INTEXIT
  105.         EXIT FUNCTION
  106.     END IF
  107.     PRINT "State: "; State%; " Error No: "; DbErr%; " OS Error: "; OsErr%
  108.     PRINT "DB-LIBRARY Error: "; DbErrStr$
  109.     IF OsErr% <> DBNOERR THEN PRINT "Operating-System Error: "; OsErrStr$
  110.     UserSqlErrorHandler% = INTCANCEL
  111. END FUNCTION
  112.  
  113. SUB UserSqlMsgHandler (SqlConn&, MsgNo&, Severity%, Level%, Msg$)
  114.     PRINT
  115.     PRINT "Msg No.:"; MsgNo&; " Severity: "; Severity%; " Level: "; Level%
  116.     PRINT "Message: "; Msg$
  117. END SUB
  118.  
  119.