Hoy vamos a ver como trabajar con Intouch – System Platform y con bases de datos SQLite. Y si quieres conocer sus origenes , un poco de literatura aquí. Como su nombre indica no es una base de datos para millones de registros, pero hay ocasiones en la que interesa que tengamos embebida una base de datos con un solo archivo como es el caso con SQLite sin necesidad de instalar nada, puede ser y es muy útil, de hecho AVEVA la utiliza para el Licence Manager 😉
Que necesitamos?
- Vamos a necesitar la libreria .Net System.Data.SQLite
Donde la descargo?
- Aquí tenemos toda la información relacionada que nos interesa. Esté fue el paquete que me descargue para las primeras pruebas.
Este es el paquete que he descargado, con la libreria que nos interesa y la que vamos a importar a Intouch / System Platform
Y aquí la sorpresa … Fallo al importar la libreria.
Si quieres evirtar ese tipo de problemas , descargate este paquete que tiene incluido varias librerias según el net. framerwork que necesites.
En esta ocasión la importación se realiza sin problemas y ya estamos preparados para escribir nuestro código.
En este ejemplo lo que vamos a realizar es un select para mostrar todos los registros que tenemos en nuestra tabla configuration y los vamos a escribir en el logger.
Aquí el código para de copiar y pegar 😉 .
try
Dim connectionString As String;
Dim query As String;
Dim connection as System.Data.SQLite.SQLiteConnection;
Dim reader As System.Data.SQLite.SQLiteDataReader;
Dim command as System.Data.SQLite.SQLiteCommand;
LogMessage("--> 1.-Start");
connectionString = "Data Source=C:\Resources\PHS.db;";
query = "SELECT * FROM Configuration";
connection = New System.Data.SQLite.SQLiteConnection(connectionString);
connection.Open();
if connection.State == System.Data.ConnectionState.Open then
command = New System.Data.SQLite.SQLiteCommand(query, connection);
reader = command.ExecuteReader();
While reader.Read()
UserName.Text = reader.GetString(0);
Level.Text = reader.GetInt32(1);
LogMessage(" User: " + UserName.Text + "-" + Level.Text);
EndWhile;
Connection.Close();
endif;
LogMessage("--> 2.-End");
catch
LogMessage(error);
endtry;
Si ejecutamos nuestro código , funciona perfectamente, ahora te toca adaptarlo según las necesidades y si realmente lo necesitas , sino ya sabes que esta opción existe.
Y para los que son nuevo en este mundillo , un poco de información adicional.
Cada vez que importamos una libreria .Net, que es lo que pasa?
El propio Intouch / System Platform crea un empaquetado con el nombre de la libreria y con la extensión *.aaSLIB. Si cambias la extensión a .zip verás de lo que estamos hablando.
Este paquete es el que se utiliza internamente para referenciar todas las librerias , funciones, metodos que contiene nuestro emsamblado y poder llamarlas desde Intouch / System Platform.
Total, que para pasar de la teoria a la práctica, cierra tu proyecto, y borra el contenido del siguiente directorio.
Si vuelves a abrir el proyecto y te vas donde estabas utilizando la libreria, tendrás un error, ya que no se encuentran las referencias.
NOTA: Cuando estas escribiendo tus propias librerias y estas importanto nuevos cambios , si no se aplican correctamente, borra el contenido y vuelve a importar.
Por otra parte, se hace una copia de la libreria en cuestión dentro del siguiente directorio, así cuando te llevas el proyecto de un PC a otro PC puedes abrir el proyecto y trabajar sin problemas al igual que el runtime.
Eso quiere decir, que observando este directorio se sabe si se trabaja con alguna libreria extra en el proyecto.
Y ahora vamos a extrapolar esta funcionalidad a como será en WinCC