Cómo conectarse a la base de datos de Access 2003 en VB6.0
Acceso a bases de datos externas en VB6.0
Como todos sabemos, la característica más llamativa de VB6.0, y lo que más preocupa a los programadores, es que accede a una Variedad de bases de datos con potentes funciones. En VB, las bases de datos que no son de MS Access se denominan bases de datos externas (base de datos externa), como dBASE, FoxPro, ODBC, etc. Usar el control de datos para acceder a una base de datos externa en VB6.0 es similar a acceder a una base de datos de Access, por lo que no entraré en detalles aquí. El acceso a una base de datos externa (tomando dBASE como ejemplo) se puede dividir aproximadamente en los siguientes pasos:
1: Cree una base de datos de Access y cree una nueva tabla en la base de datos, una tabla adicional. Al configurar los valores de los atributos de la tabla adicional, establece una relación de vínculo con la base de datos a la que desea acceder. El código del programa es el siguiente:
DimDbasDatabase
DimTdasNewTabledef
SetDb=OpenDatabase("MYDB.MDB")
Td.Connect ="dBASE :DATABASE=c:\DATADIR"
Td.SourceTableName="AU THOR"
Td.Name="dBASEAuthorTable"
Db.tabledefsAppendTd
Db.close
Dos: establece la ruta del archivo INI. En el programa VB, se utiliza la operación de acceder a una base de datos externa. Después de que la aplicación genera un archivo EXE, se debe proporcionar un archivo INI. Si no se puede encontrar este archivo INI, no se podrá acceder a la base de datos y aparecerá el mensaje de error "NOTFOUNDIN STOLLABKISAMS". Después de configurar la ruta del archivo INI, el programa VB buscará un archivo INI con el mismo nombre que la aplicación en el Subdirectorio de WINDOWS.
El código para configurar la ruta del archivo INI es:
SetDataAccessOption1, "Path\Filename"
Tres: Editar el archivo .INI puede configurar diferentes tipos de bases de datos. El siguiente es un INI. código de archivo:
[Opciones]
SystemDB=c: \MyPATH\SYSTEM.MDA
[ISAM]
PageTimeout=5
MaxBufferSize=128
LockRetry=20
CommitLockPetry=20
ReadAheadPages=16
[InstallableISAMs]
Paradox3.x=C:\VB\pdx110.DLL
FoxPro2.0=C:\VB\xbs110.DLL
FoxPro2.5=C :\VB \pdx110.DLL
dBASE=C:\VB\pdx110.DLL
dBASE=C:\VB\pdx110.DLL
Btrieve= C:\ VB\btrv110.DLL
[ParadoxISAM]
PageTimeout=600
ParadoxUsername=BaiUser
ParadoxNetPath=P:\ PDXDB\
CollatingSeguence=Ascii
[dBASE]
centry=off
Data=American
Mark =47
Eliminado=on
De esta manera, puede acceder a la base de datos externa a la que desea acceder accediendo a la nueva base de datos MYDB.MDB y la tabla "DBASEAU THORTABK".
Cuando se utiliza este método para acceder a una base de datos externa, se debe tener en cuenta que la tabla adicional solo establece una relación de vínculo en la base de datos a la que se agrega. La ubicación real de la tabla aún existe en la original. base de datos Cuando se elimina la base de datos a la que está adjunta, solo se elimina la relación de enlace y no se elimina la tabla real.
Método de consulta de registros de la base de datos de VB
Como todos sabemos, la operación de consulta real de los registros de la base de datos en VB6.0 debe determinarse de acuerdo con la forma de abrir la base de datos. Tomando VB3.0 como ejemplo, hay tres tipos de objetos de conjunto de datos: tabla, Dynaset e instantánea. Los siguientes métodos de consulta se aplican respectivamente a las bases de datos abiertas en los diferentes modos de objetos anteriores.
1. Consulta con SQL. SQL es un lenguaje de consulta de datos estructurados y SQL solo se puede aplicar a objetos de conjuntos de datos Dynaset y Snapshot. Este método genera un objeto de conjunto de datos según las condiciones de SQL. Por ejemplo:
s="select * from demo donde el nombre es como 'Liu*'"
set dy=db.createDynaset(s)
〖Nota 〗: db en este artículo es un objeto de base de datos y el método de apertura es:
Por ejemplo: set db=OpenDatabase ("C:\VB\SAMPLE.MDB").
2. Consulta utilizando el atributo FILTER. La propiedad Filtro solo está disponible para objetos Dynaset y Snapshot, por lo que solo se puede aplicar a estos dos y no se puede usar para la Tabla. El filtro se utiliza para filtrar datos. Siempre que proporcionemos condiciones de filtrado, podemos filtrar los registros requeridos. Cabe señalar que necesitamos abrir el conjunto de datos filtrado por la propiedad Filtro para operar en él.
Por ejemplo:
establecer dy1=db. createDynaset("demostración")
dy1. filter="Nombre como 'Liu*'"
establecer dy2=dy1. crearDynaset()
3. Utilice el método FIND para realizar consultas. FIND es aplicable a objetos Dynaset y Snapshot. Tiene dos métodos: Findfirst y Findnext cada vez que se consulta un registro. Por ejemplo:
set dy=db.createDynaset("demo":)
s="Salary>160 and name like 'Liu*'"
dy .findfirst s
dy.findnext s
4. Utilice el método SEEK para realizar consultas. Este método solo se usa para tablas de datos de tipo Tabla abiertas en modo Opentable, y se debe crear un archivo de índice con el campo de consulta antes de realizar la consulta. Dado que se creó el archivo de índice, la velocidad de la consulta es muy rápida. es Mueve el puntero al primer registro que cumple los criterios. Por ejemplo:
establecer tb=db.opentable("demo")
tb.index="nameindex"
tb.seek "="张tres".
Hable sobre el método de programación de bases de datos de VB6.0
La programación de bases de datos de VB6.0 se puede dividir en tres categorías según su dificultad (de fácil a difícil); p >
1. Usar controles de base de datos y controles vinculados
2. Usar variables de objetos de base de datos para programar
3. Llamar directamente a ODBC2.0API
Cuando Al usar VB para la programación de bases de datos, generalmente se elegirá primero uno de los tres métodos básicos para diseñar el programa de aplicación de la base de datos. Ahora comparemos el alcance de la aplicación y las ventajas y desventajas de los tres métodos de diseño anteriores.
<1>Utilizar controles de base de datos y controles vinculantes
1. Ventajas Es la menor cantidad de codificación entre los tres métodos. No es necesario comprender los detalles de CDBC2. 0 API y permite el uso de elementos de control desarrollados por fabricantes externos que simplifican el manejo de errores y admiten todos los métodos y propiedades de conjuntos dinámicos.
2. ambos pertenecen a objetos de conjunto de registros) No se puede acceder a colecciones de bases de datos, como definiciones de tablas (TableDefs), campos (Fieds), índices (Indexes) y definiciones de consultas (QueryDefs). Solo se puede acceder a algunas funciones de administración ODBC2.0 y no se pueden realizar transacciones reales. procesamiento Función de diagnóstico de errores limitada p>
3. La aplicación solo realiza breves operaciones de navegación en tablas de bases de datos de tamaño pequeño y mediano (generalmente menos de mil registros. La longitud del conjunto de resultados correspondiente a una consulta SQL básica es). limitado (normalmente el número de registros en el conjunto de resultados es inferior a cien. Estos registros se recuperan de una o dos tablas de longitud limitada) Los elementos de entrada/salida de datos de la aplicación son pequeños (normalmente sólo una o dos tablas de longitud limitada) La longitud está involucrada y el número de campos en la tabla es de alrededor de 10 y no tiene restricciones de integridad relacional
<2>Utiliza variables de objetos de base de datos para la programación
1. Se puede acceder a las funciones de administración de ODBC2.0 en el programa y puede controlar múltiples conjuntos de registros. Tipo: Los objetos de colección de registros Dynaset, Snapshop y Table pueden acceder a procedimientos almacenados y acciones de consulta. Puede acceder a objetos de colección de bases de datos como TableDefs, Fields, Indexes y. QueryDefs Tienen capacidades reales de procesamiento de transacciones, que incluyen iniciar transacciones (Begintrans) y enviar transacciones (CommitTrans) y revertir transacciones (Rollback)
2. elementos de control. Solo se puede realizar el manejo de errores indirecto y la recuperación de errores. No existe un control detallado de cada operación de la base de datos. Las operaciones en el conjunto de resultados y los recursos internos que contienen el conjunto de resultados son limitados y el rendimiento es inferior al del método. de usar directamente la función API ODBC2.0
3. La aplicación necesita crear tablas y tablas dinámicamente durante la ejecución Aplicaciones de campo e índice Aplicaciones transaccionales complejas que involucran actualizaciones simultáneas de varias tablas (pero lógicamente consistentes) Uso de resultados. conjuntos en lugar de formularios de Dynaset (FORMS), como instantáneas o tablas, aquí se presentan consideraciones clave de diseño. Las tablas de la aplicación son muy grandes, con más de 1000 registros. La aplicación tiene elementos de entrada/salida de datos complejos, que involucran muchos campos relacionados internamente. incluir reglas de coherencia o integridad referencial de la base de datos. La aplicación necesita realizar algunas operaciones y validaciones adicionales de consulta de conjuntos de resultados, especialmente aquellos que requieren un alto formato y visualización de datos. Las aplicaciones necesitan utilizar funciones complejas de administración de ODBC para seleccionar, configurar y verificar y establecer varias fuentes de datos. Las aplicaciones necesitan "mostrar" la base de datos durante la ejecución. Las aplicaciones de estructura básica necesitan utilizar métodos complejos de indexación de códigos múltiples para recuperar o actualizar registros.
<3> .0 API
1. Ventajas: puede participar directamente en el desarrollo del conjunto de resultados. La gestión y la estandarización proporcionan más control sobre los cursores del conjunto de resultados y proporcionan más tipos de cursores y acciones de ejecución para determinar la coherencia. Nivel de controlador ODBC y SQL, y puede controlar mejor la programación de ejecución de Windows y la utilización de recursos. Otros Es casi igual que otros métodos, por lo que es probable que este método tenga el mejor rendimiento. Desventajas: Requiere mucho código y es más complejo que los otros dos métodos y requiere que los programadores tengan experiencia en la programación de llamadas API en la red. El manejo de errores de la biblioteca en tiempo de ejecución de Visual Basic carece de seguridad, por lo que las consecuencias de los errores que ocurran durante la ejecución del código. ser muy serio
3. Aplicación si el entorno del sistema es a gran escala en modo cliente/servidor entorno multiusuario, la aplicación debe ser capaz de resolver con precisión posibles errores y fallas del sistema.
Las aplicaciones exitosas enfatizan el uso de recursos. Aquí, la consideración principal es cómo controlar directamente la memoria y los recursos del servidor de red. Las aplicaciones utilizan bases de datos de gran escala. Por ejemplo, las tablas de bases de datos pueden contener decenas de miles o cientos de miles de registros.
Realmente eliminar registros de la base de datos
Como todos sabemos, de forma predeterminada, cuando VB elimina registros, solo los marca como eliminados y en realidad no los elimina. Para eliminar registros, puede utilizar los siguientes métodos proporcionados por VB: BeginTrans, CommitTrans, RollBack. Entre ellos, el método BeginTrans comienza a registrar los cambios de la base de datos, el método CommitTrans confirma los cambios de la base de datos y el método RollBack puede restaurar registros eliminados o modificados. Se pueden utilizar anidados. Por lo tanto, para recuperar registros eliminados, debe usar el método RollBack después de usar el método BeginTrans y antes de usar el método CommiTrans.
No es necesario utilizar el control DATA para operar archivos de base de datos.
Como todos sabemos, si utiliza el control DATA para acceder a la base de datos en VB, la ejecución del programa debe ser compatible con algunas DLL grandes. Este es un gran problema para la distribución de discos de instalación. Entonces, ¿podemos acceder a la base de datos en VB sin utilizar el control DATOS?
En VB, sólo hay una forma de acceder a la base de datos sin utilizar el control DATA: abrir el archivo de la base de datos como un archivo binario. Pero la mayor dificultad con este método es que debes comprender la estructura del archivo de la base de datos.
Por ejemplo: el archivo DBF de FoxBase (no conozco la estructura de archivos de otras bases de datos, puedes consultarla): consta de encabezados de registros y registros. El encabezado del registro se compone de dos partes: encabezado del registro = descripción de la base de datos + descripción del campo. La descripción de la base de datos FoxBase se enumera a continuación: Descripción de la base de datos FoxBase dirección inicial número de byte significado
1 1 indicador del archivo de base de datos FoxBase
2-4 3 Fecha de la última modificación, 3 bytes Son año, mes y día respectivamente
5-8 4 Número total de registros de archivo
9-10 2 Longitud del encabezado del registro
11-12 2 Longitud de cada registro
13-22 20 No utilizado
Las descripciones de los campos se enumeran a continuación, cada campo consta de 32 bytes.
Descripción del campo dirección inicial número de byte significado
1-11 11 Nombre del campo
12 1 Tipo de campo (respectivamente C, N, D, L, etc.)
13-16 4 Dirección de este campo en el archivo
17 1 Longitud del campo
18 1 Número de decimales
19 -32 14 No usado
Después de conocer la descripción de la información del campo, puede usar variables compuestas + archivos binarios para operar la base de datos.
Texto para acceder a MDB
El tipo de archivo Texto se utiliza en muchos software para proporcionar un puente entre las aplicaciones generales y las bases de datos. Puede utilizar el controlador Text ISAM y SQL para convertir un archivo de texto en un archivo de base de datos de Access MDB. Primero, cree un archivo SCHEMA.INI para el archivo de texto.
Luego, puede utilizar el siguiente código para implementar la conversión:
Dim db As Database, tbl as TableDef
Set db = DBEngine.CreateDatabase(App.Path & "\mymdb. mdb ", dbLangGeneral, dbVersion_0)
Establecer tbl = db.CreateTableDef("Temp")
tbl.Connect = "Text;database=c:\vbpj\data" p >
tbl.SourceTableName = "Cliente#txt"
db.TableDefs.Append tbl
db.Execute "Seleccione Temp.* en NewTable desde Temp"
db.TableDefs.Delete tbl.Name
db.Close
Establecer tbl = Nada
Establecer db = Nada
Bloquear la tabla en la base de datos
Coloque la expresión True=False en el atributo ValidationRule de la tabla para bloquearla. HardLockTable? implementa esta funcionalidad.
Declaración
MyDB pública como base de datos
Dummy Dummy como entero
Función
Función HardLockTable (ByVal cualAcción Como cadena,?ByVal aTable As String) Como entero
En caso de error, vaya a HardLockTableError
HardLockTable = True
Seleccione caso y acción
Caso "Lock"
MyDB.TableDefs(aTable).ValidationRule = "True=False"
MyDB.TableDefs(aTable).ValidationText =?"Esta tabla bloqueada mediante " & ?" ValidationRule en " & Now
Caso "Desbloquear"
MyDB.TableDefs(aTable).ValidationRule = ""
MyDB.TableDefs(aTable).ValidationText = ""
Caso "TestThenUnLock"
Si MyDB.TableDefs(aTable).ValidationRule = "True=False" Entonces
MyDB.TableDefs(aTable). ValidationRule = ""
MyDB.TableDefs(aTable).ValidationText = ""
Finalizar si
Finalizar selección
HardLockTableErrorExit:
'subFlushDBEngine
'opcional, consulte la siguiente sugerencia
Función de salida
HardLockTableError:
HardLockTable = False
Error de MsgBox$ & " error " & "en HardLockTable intentando " & "to " & whatAction & " " & aTable
Reanudar HardLockTableErrorExit
Finalizar función p>
Ejemplo de uso
'Lock
Dummy = HardLockTable("Lock", "TestTable")
' Desbloqueo
Dummy = HardLockTable("UnLock", "TestTable")
Cerrar todas las conexiones de datos
Si se utilizan controles de datos como DAO, RDO o ADO en el código, en Todos los conjuntos de registros, bases de datos y espacios de trabajo abiertos deben cerrarse al salir. Aunque se puede cerrar la sesión del objeto automáticamente, la conexión de datos no se desconectará inmediatamente, lo que puede provocar que parte de la memoria no sea reasignada por el sistema.
El siguiente código puede cerrar todos los espacios de trabajo DAO abiertos y liberar la memoria ocupada.
Sub Form_Unload privado (Cancelar como número entero)
En caso de error, reanudar siguiente
Atenuar ws como espacio de trabajo
Atenuar db como base de datos
Atenuar rs como conjunto de registros
'
Para cada ws en espacios de trabajo
Para cada base de datos en ws. Bases de datos
Para cada rs en db.Recordsets
rs.Close
Establecer rs = Nada
Siguiente
db.Close
Establecer db = Nada
Siguiente
ws.Close
Establecer ws = Nada
Siguiente
'
End Sub
¿Cómo eliminar los datos en la base de datos de FoxPro?
Cuando se utiliza VB para operar FOXPRO base de datos, a menudo nos encontramos Nos encontramos con un problema de este tipo: solo podemos ELIMINAR un registro, es decir, poner una marca de eliminación en el registro, pero no podemos usar "PACK" para eliminar el registro como en la base de datos. registros, el uso de programas creados por controles como DBGRID saldrá mal. ¿Qué debo hacer? De hecho, los archivos DBF no se pueden empaquetar en VB. Solo puede establecer la configuración ISAM Eliminado en Activado. Esto es equivalente a SET DELETED ON de FoxPro. Si no lo crees, puedes intentarlo.
Introducción al método de acceso a bases de datos VB
Visual Basic (VB para abreviar) es una herramienta visual de desarrollo de aplicaciones de Windows basada en eventos que se utiliza en el diseño, dibujo y tabulación de GUI. Tiene las ventajas de simplicidad, facilidad de uso y potentes funciones en informática, comunicación y desarrollo multimedia, por lo que es cada vez más preferido por los desarrolladores. Al mismo tiempo, VB también tiene potentes funciones en el desarrollo de bases de datos que Foxpro no puede igualar. VB puede leer y acceder a múltiples bases de datos como Access, Excel, DbaseX, Foxpro, Btrieve y ODBC, y puede usar el propio motor de base de datos de VB para crear una base de datos de Access. Por lo tanto, VB se ha utilizado cada vez más en el desarrollo y construcción de sistemas de información de gestión (MIS). Ahora, el autor dará una breve introducción a algunos métodos de la base de datos de la aplicación VB.
VB generalmente tiene tres formas de acceder a la base de datos: primero, acceder a través del control de base de datos Data Control; segundo, acceder mediante programación a través de las variables de objeto de la base de datos proporcionadas por VB; tercero, acceder a las funciones API de ODBC a través de ODBC; interfaz. Entre estos tres métodos, el primer método es el más conveniente, flexible y fácil de dominar, y también refleja mejor las características orientadas a objetos de Visual Basic. Por lo tanto, se utiliza la base de datos de Foxpro2.5 como ejemplo para presentarlo. Métodos de control de control de base de datos (Control de datos) y pasos para acceder a la base de datos:
1. Agregue el control de Control de datos a la ventana Formulario
Utilice el mouse para hacer doble clic en el botón izquierdo. del botón de control Control de datos en la ventana de herramientas. Aparecerá en el medio de la ventana Formulario (el control se llama Datos1. Utilice el mouse para ajustar el tamaño y la posición del control). Si no existe tal control en la caja de herramientas, puede abrir Herramientas/Personalizado en el menú principal, seleccionar la casilla de verificación Control de datos de Microsoft en la lista y luego agregar este control a la caja de herramientas después de la confirmación.
2. Configure la biblioteca de conexión
Haga clic en Datos1 con el mouse, presione F4, abra la ventana de propiedades, establezca la propiedad Conectar en Foxpro2.5 y establezca el Nombre de la base de datos en c: \foxprow\student .dbf (asumiendo que este archivo ya está en el disco).
3. Agregar controles de visualización y edición de campos (controles incluidos en la base de datos)
Agregar el control DGrid a la ventana Formulario. Si no está en este control, puede abrir el menú principal. Herramientas/Personalizado y haga clic en la lista. Seleccione la casilla de verificación Apex Data BroundGrid y confirme para agregar este control a la caja de herramientas. Haga clic para seleccionar este control (DGrid1) en la ventana Formulario, presione F4 para abrir la ventana de propiedades, establezca la propiedad Fuente de datos en Datos1, haga clic con el botón derecho en el control DGrid1 en la ventana Formulario y seleccione Recuperar campos; DGrid1, seleccione Editar, use el mouse para ajustar el tamaño del control y los campos relacionados, luego haga clic derecho en el control DGrid1, seleccione Propiedades, en la ventana emergente, seleccione la etiqueta Columnas, seleccione Colum1 en la lista desplegable; y cambie la propiedad Título a "Estudio" "No.", seleccione Colum2, cambie el atributo Título a "Nombre", seleccione Columna 3 y 4, cambie el atributo Título a "Género", "Profesional" y presione "Aceptar". " botón.
Agregue un control de botón a la ventana Formulario, establezca la propiedad Título en "Salir", haga doble clic en el control (Comando1), escriba "FIN" en la ventana de código y guarde.
En este punto, se ha establecido una aplicación con funciones de lectura, escritura y navegación de base de datos. Presione F5 para ejecutarla. Puede ver los cambios en el registro actual haciendo clic en los botones de Datos1.
Sobre esta base, también podemos utilizar las propiedades y métodos relevantes del control de control de la base de datos para una operación y control más flexibles.
1. Configure Data1.Visiable=False' para hacer que el control sea invisible.
2 Configure las propiedades de Título de los botones Command2, 3, 4, 5, 6 y 7 respectivamente. "Agregar", "Primer registro", "Registro anterior", "Siguiente registro", "Último registro", "Eliminar", haga doble clic en cada botón y escriba el código de evento respectivamente:
Subcomando1- Haga clic en ( ) 'Cerrar aplicación
Fin
Fin Sub
Sub Comando2-Click() 'Agregar registro
Datos1.Recordset . Addnew
Data1.Recordset .Update
Data1.Recordset .MoveLast
End Sub
Sub Command3-Click() 'Mover a el primer Registro
Data1.Recordset .MoveFirst
End Sub
Sub Command4-Click() 'Mover al registro anterior
Data1.Recordset .MovePrevius
Si Data1.Recordset .Bof Entonces
Data1.Recordset .MoveFirst
Finalizar si
End Sub
Subcomando3-Clic() 'Mover al último registro
Datos1.Recordset .MoveLast
Fin Sub
Subcomando4-Clic () 'Mover siguiente registro
Data1.Recordset .MoveNext
Si Data1.Recordset .Eof Entonces
Data1.Recordset .MoveLast
End If
End Sub
Además, el control de control de la base de datos también tiene muchas propiedades y métodos, como Bookmark y RecordCount, que pueden realizar varias operaciones convenientes en la base de datos.
Se puede ver que el control de control de la base de datos tiene funciones poderosas en las operaciones de la base de datos. Además, a la propiedad RecordSource del control de base de datos se le puede asignar un valor mediante una instrucción SQL.