Red de conocimiento informático - Material del sitio web - Usar OLE para acceder a datos de blobs en PB (ⅲ)

Usar OLE para acceder a datos de blobs en PB (ⅲ)

Creación del programa fuente

) Primero, cree una tabla blobsave con la siguiente estructura en la base de datos.

¿Nombre del campo? Comentarios sobre el tipo de datos

id char()? Índice de clave principal

s_path char()

¿foto? Binario ( )

)Crear blob de biblioteca PBl guardar PBl en PB

)Crear y aplicar blob en biblioteca PBl guardar blob guardar PBl.

Establezca un programa de conexión a la base de datos en el evento abierto de la aplicación (este programa usa odbc para conectarse a la base de datos. Los lectores pueden elegir diferentes métodos de conexión según la base de datos que hayan establecido. El siguiente código se utiliza para conectarse a la base de datos También se ha modificado. En cuanto a los métodos de conexión de diferentes bases de datos, consulte la información relevante. Este artículo no lo presentará en detalle)

SQLCA DBMS = ODBC SQLCA auto commit =. False SQLCA db parm = cadena de conexión = DSN = conexión de blob open(w_main)

El formato de código en cb_path del botón de comando en el que se hizo clic es el siguiente: open(w_path).

El formato del código en el botón de comando en el que se hace clic, cb_dbblob, es el siguiente: open(w_dbblob).

El formato del código en el botón de comando en el que se hace clic, cb_OLEblob, es el siguiente: open(w_OLEblob).

) Crea una ventana de datos dw_blobsave.

¿Crear un número basado en lo anterior? La ventana de datos dw_blobsave se crea mediante el método de columna lob, como se muestra en la figura.

Entre ellos, agregar, eliminar, guardar, cancelar recuperación, etc. están los botones de acción de agregar fila, eliminar fila, actualizar recuperación, etc. de la ventana de datos dw_blobsave.

Primero, cree la variable de instancia OLEstorage stor.

Luego construya la ventana w_path como se muestra en la figura, en la cual el código en rowfocuschanged del control de la ventana de datos dw_ es el siguiente.

fila larga _ num fila _ num = dw _ getrow()if fila _ num & gt entonces ole _ insert file(dw _ object s _ path[fila _ num])end if

Entre ellos, el código al hacer clic en el botón de la ventana de datos dw_ es el siguiente

Si dos nombres = CB seleccione entonces fila larga _ num fila _ num = dw _ getrow() nombre de archivo de ruta de archivo de cadena getfileopenname (Seleccione el archivo de nota, la ruta del archivo, el nombre del archivo) dw _ objects _ path [fila _ num] = ruta del archivo ole _ insert file (ruta del archivo) end if.

Guardar ventana w_path

) Crear ventana w_dbblob.

Abra w_path, guárdelo como w_dbblob y modifique el código en la ventana de datos de rowfocuschanged dw_ de la siguiente manera.

texto blob fila larga _ num fila _ num = dw _ getrow() si fila _ num & gt; entonces cadena id id = dw _ id de objeto[fila _ num]sqlca automit = true seleccionar imagen de blob into:text from blob save donde id =:id ole _ object data = text sqlca automit = false end if

Haga clic en el botón para cambiar el código en la ventana de datos dw_ de la siguiente manera

fila larga _ num si dos nombres = CB seleccionar luego fila _ num = dw _ getrow()cadena ruta del archivo nombre de archivo getfile nombre abierto dw _ objetos _ ruta[ro]W _ num]= ruta del archivo ole _ insertar archivo(ruta del archivo) finalizar si dos nombre = CB guardar entonces ID de cadena sqlca automit = verdadero texto de blob = ole _ datos de objeto dw _ update()MIT ro W _ num = dw _ getrow()id = dw _ ID de objeto[fila _ num] updateblob conjunto de almacenamiento de blobs pic =: texto donde id =:id MIT sqlca automit = false dw_retrieve()dw_scroll fila(row_num)end if ventana de almacenamiento w_dbblob.

) Ventana de compilación w_OLEblob.

Abre w_path y guárdalo como w_OLEblob. Escriba el siguiente código en el evento abierto de la ventana w_OLEblob.

stor = crear stor de almacenamiento ole Open(c:\ p ole)//Abra o cree un archivo ole y escriba el siguiente código en el evento de cierre de la ventana w_OLEblob: destroy stor.

Cambie el código en rowfocuschanged de la ventana de datos dw_ de la siguiente manera

blob text long row _ num row _ num = dw _ getrow()if row _ num & gt; id id = dw _ object id[row _ num]ole _ open(stor w+id)end if

Haga clic en el botón para cambiar el código en la ventana de datos dw_ de la siguiente manera

fila larga _ num si dos nombres = CB seleccionar luego fila _ num = dw _ getrow()cadena ruta del archivo nombre de archivo getfile nombre abierto dw _ objetos _ ruta[ro]w _ num]= ruta del archivo ole _ insertar archivo(ruta del archivo) finalizar si dos nombres = CB guardar luego ID de cadena fila _ num = dw _ getrow()id = dw _ id de objeto[fila _ num]ole _ guardar como(stor w+id)stor save()end if

Guarde la ventana w_OLEblob y ejecute la aplicación.

Las ventajas y desventajas de los tres métodos

Método 1: el archivo se almacena en una ruta fija en la base de datos. El acceso a las rutas y nombres de los archivos ahorra espacio en los datos y evita la expansión excesiva de la base de datos. Sin embargo, los archivos de notas deben estar en un directorio determinado y no se puede cambiar el nombre de los archivos en el mismo directorio, lo que trae ciertas dificultades a la administración de archivos. Además, al explorar y mostrar archivos de notas en controles OLE, se llama al programa del servidor cada vez, por lo que la velocidad es lenta.

El segundo método consiste en almacenar el archivo memo en una base de datos con campos de tipo blob o varbinary. Los archivos temporales originales en el disco duro se pueden eliminar mientras los archivos están almacenados en la base de datos. No es necesaria una gestión compleja de archivos binarios, la base de datos se puede almacenar en el servidor de red y compartir datos es muy conveniente.

Lishi Xinzhi/Article/program/SQL/201311/16227