Puede suceder que al momento que escribimos un programa usando Mono C# y Sqlite al momento de compilar nuestro programa tengamos problemas, por ejemplo al ejecutar un programa de consola resultaba en el siguiente error:
$ mono testsqlite.exe
Unhandled Exception: System.EntryPointNotFoundException: sqlite3_column_origin_name
at (wrapper managed-to-native) Mono.Data.Sqlite.UnsafeNativeMethods:sqlite3_column_origin_name (intptr,int)
at Mono.Data.Sqlite.SQLite3.ColumnOriginalName (Mono.Data.Sqlite.SqliteStatement stmt, Int32 index) [0x00000] in <filename unknown>:0
Para solucionar el problema tenemos que compilar Sqlite nuevamente desde fuentes de la siguiente manera:
- Descarga del sitio de Sqlite la versión que incluye los scripts de configure para generar nuestro archivo Makefile.
- Descomprime el paquete usando tar -zxvf sqlite-autoconf-3071000.tar.gz y cambia dentro del directorio.
- Incluye los parámetros que configure debe habilitar para compilar Sqlite con make. $ CFLAGS=”-DSQLITE_ENABLE_COLUMN_METADATA” ./configure
- ejecuta make; sudo make install
- Ahora una vez más ejecuta el programa
$ mono testsqlite.exe
WebService: Get Customers from Database
WebService: Database Connection String=journal mode=Off;data source=/home/jacob/TitaniumStudioWorkspace/labsergen/454/454ws/testing/module454.sql.db
WebService: Closing Database Connection
WebService: Database Closed Connection
En resumen es necesario compilar Sqlite con la opción -DSQLITE_ENABLE_COLUMN_METADATA para incluir las rutinas que permiten que Sqlite regrese la información especifica para las tablas, columnas definidas en una base de datos Sqlite.