Visión general de la aplicación Visual Basic de ejemplo

La aplicación Visual Basic de ejemplo le muestra cómo acceder a los datos de DB2 Everyplace utilizando Visual Basic. Puede desarrollar aplicaciones que tengan iguales la lógica de aplicación y la interfaz de usuario en sistemas operativos Pocket PC (WinCE) y Win32. Junto con DB2 Everyplace se proporcionan dos aplicaciones Visual Basic de ejemplo. Uno de ellos es para el sistema operativo Pocket PC (WinCE) y el otro es para los sistemas operativos Win32. Ambas aplicaciones de ejemplo tienen el mismo código e interfaz de usuario. El archivo db2evb.bas, que contiene la lógica de la aplicación, es común a ambos sistemas operativos. Consulte *** para obtener más información.

Archivos incluidos en la aplicación de ejemplo

El directorio de proyectos Visual Basic, donde reside la aplicación de ejemplo, está situado en el directorio donde se instaló DB2 Everyplace. Para Pocket PC (WinCE), puede encontrar los archivos en \db2everyplace\clients\wince\database\visualbasic. Para sistemas operativos Win32, los puede encontrar en \db2everyplace\clients\win32\database\visualbasic.

La aplicación Visual Basic de ejemplo incluye los archivos siguientes:

db2evb.bas
El archivo db2evb.bas contiene la aplicación Visual Basic de ejemplo. Puede utilizar la aplicación de ejemplo como guía para escribir su propia aplicación Visual Basic.

db2ecli.bas
El archivo db2ecli.bas es la interfaz de Visual Basic que conecta con la base de datos DB2 Everyplace. Este archivo también define diversas restricciones de DB2 Everyplace que se encuentran en sqlcli.h, sqlcli1.h, sqlext.h y sqlsystm.h. Este archivo sólo contiene las restricciones de uso más frecuente. Si es necesario, puede añadir otras restricciones contenidas en sqlcli.h, sqlcli1.h, sqlext.h y sqlsystm.h.

DB2eForms (las extensiones varían según el sistema operativo)
Archivo de la interfaz de usuario de la aplicación.

DB2eSample.exe (para WinCE, DB2eSample.vb)
Archivo ejecutable de la aplicación.

DB2eSample.vbw
Archivo de proyecto de la aplicación.

DB2eSample.vbp ( para WinCE, DB2eSample.ebp )
Archivo de proyecto de la aplicación.

Ejemplo para Visual Basic: db2evb.bas

Los pasos principales utilizados en la aplicación de ejemplo (db2evb.bas ) son:

Conectar con la base de datos DB2 Everyplace.

Acceder a datos de DB2 Everyplace.

Termine la aplicación de aplicación.

Nota:
Antes de salir, asegúrese de que la aplicación cierra la conexión con la base de datos DB2 Everyplace.

En el presente ejemplo se han añadido comentarios para describir los pasos de la aplicación de ejemplo.

Option Explicit
 
Public henv    As Long          ' Descriptor de entorno
Public hdbc    As Long          ' Descriptor de base de datos
Public hstmt   As Long          ' Descriptor de sentencia
Public rc      As Integer       ' Código de retorno
 
Public dbpath As String     ' vía del sistema de archivos donde DB2e creará tablas.
Public userid As String     ' ID de usuario: no utilizado por DB2 Everyplace.
Public pass   As String     ' Contraseña: no utilizada por DB2 Everyplace
 
'--------------------------------------------------------------------------------
' Función: DB2eTest
'
' Descripción: Función que muestra cómo pueden hacerse llamadas a DB2 Everyplace.
'
'--------------------------------------------------------------------------------
 
Public Function DB2eTest() As Integer
    Dim errmsg As String
    Dim numCols As Integer
    Dim i As Integer
    Dim retLen As Long
    Dim data As String
    Dim crtStmt As String
    Dim insStmt1 As String
    Dim insStmt2 As String
    Dim selStmt As String
    On Error Resume Next 'Importante: no me pregunten porqué, pero esta línea
                          'es necesaria en cada función que llama a funciones
                          'de db2e.dll; de no incluirla, visual basic hace
                          'cosas misteriosas.    '
    dbpath = ""
    userid = ""
    pass = ""
    '
    crtStmt = "CREATE TABLE x(a INT, b TIMESTAMP)"
    insStmt1 = "INSERT INTO x VALUES(1, CURRENT TIMESTAMP)"
    insStmt2 = "INSERT INTO x VALUES(2, CURRENT TIMESTAMP)"
    selStmt = "SELECT * FROM x"
    '
    data = String(80, " ")
    ' Paso 1: asignar un descriptor de entorno.
    '
    
    DB2eForm.DB2eText.Text = vbCrLf & vbCrLf & "Asignar descriptor de entorno"
  
    rc = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HENV, henv)
    If (rc <> 0) Then
        rc = DB2eError()
        rc = DB2eTerminate()
        Exit Function
    End If
   
    '
    ' Paso 2: asignar un descriptor de base de datos
    '
    
    DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & vbCrLf & 
                             " Asignación de un descriptor de base de datos"
    
    rc = SQLAllocHandle(SQL_HANDLE_DBC, henv, hdbc)
    If (rc <> 0) Then
        rc = DB2eError()
        rc = DB2eTerminate()
        Exit Function
    End If
                
    '
    ' Paso 3: conectar con la base de datos
    '
    DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & vbCrLf & 
                             "  Conexión con la base de datos"
    
    rc = SQLConnect(hdbc, dbpath, SQL_NTS, userid, SQL_NTS, pass, SQL_NTS)
    If (rc <> 0) Then
        rc = DB2eError()
        rc = DB2eTerminate()
        Exit Function
    End If
    
    '
    ' Paso 4: asignar un descriptor de sentencia.
    '
    
    DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & vbCrLf & 
                             " Asignación de un descriptor de sentencia"
    
    rc = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, hstmt)
    If (rc <> 0) Then
        rc = DB2eError()
        rc = DB2eTerminate()
        Exit Function
    End If
 
        DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & vbCrLf
    
    '
    ' Ahora puede utilizar llamadas de función CLI para ejecutar sentencias SQL.
    '
    ' Paso 5: crear una tabla
    '
    
    DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & vbCrLf & "  " & crtStmt
    rc = SQLExecDirect(hstmt, crtStmt, SQL_NTS)
    If (rc <> 0) Then
        rc = DB2eError()
        rc = DB2eTerminate()
        Exit Function
    End If
    
    '
    ' Cree de nuevo la misma tabla para forzar un mensaje de error y
    ' ver si DB2eError funciona.
    '
    'rc = SQLExecDirect(hstmt, "create table p(a int)", SQL_NTS)
    'If (rc <> 0) Then
    '   testmsg = MsgBox("BLA1", 1, "DB2 Everyplace Visual Basic")
    '   rc = DB2eError()
    '   testmsg = MsgBox("BLA2", 1, "DB2 Everyplace Visual Basic")
    '   rc = DB2eTerminate()
    '   testmsg = MsgBox("BLA3", 1, "DB2 Everyplace Visual Basic")
    '   Exit Function
    'End If
    '
    
    '
    ' Paso 6: insertar datos en la tabla.
    '
    
    DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & vbCrLf & "  " & insStmt1
    rc = SQLExecDirect(hstmt, insStmt1, SQL_NTS)
    If (rc <> 0) Then
        rc = DB2eError()
        rc = DB2eTerminate()
        Exit Function
 
    End If
 
    DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & vbCrLf & "  " & insStmt2
    rc = SQLExecDirect(hstmt, insStmt2, SQL_NTS)
    If (rc <> 0) Then
        rc = DB2eError()
        rc = DB2eTerminate()
        Exit Function
 
    End If
 
        DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & vbCrLf
 
    '
    ' Paso 7: recuperar datos de la tabla.
    '
    
    DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & vbCrLf & "  " & selStmt 
                            & vbCrLf 
    
    rc = SQLExecDirect(hstmt, selStmt, SQL_NTS)
    If (rc <> 0) Then
        rc = DB2eError()
        rc = DB2eTerminate()
        Exit Function
    End If
    
    
    rc = SQLNumResultCols(hstmt, numCols)
    If (rc <> 0) Then
        rc = DB2eError()
        rc = DB2eTerminate()
        Exit Function
    End If
    
    Do While (SQLFetch(hstmt) = SQL_SUCCESS)
        For i = 1 To numCols
            rc = SQLGetData(hstmt, i, SQL_C_CHAR, data, 80, retLen)
            DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & "  " & data & vbCrLf
    If (rc <> 0) Then
        rc = DB2eError()
        rc = DB2eTerminate()
                Exit Function
            End If
        Next
        data = String(80, " ")
        DB2eForm.DB2eText.Text = DB2eForm.DB2eText.Text & vbCrLf
    Loop
    
    '
    ' Paso 8: cerrar conexión con la base de datos DB2e antes de que
    ' la aplicación termine.
    '
        rc = DB2eTerminate()
    
    DB2eTest = 0
End Function

Tareas relacionadas