[Mono-list] Using System.Data.SQLite from both windows and linux

Dan Winslow DWinslow at aiminstitute.org
Mon Jan 18 14:46:27 EST 2010


I am trying to write a single source that can run on both windows and
linux, and that uses Sqlite as its data storage. I am using the current
mono build ( I built from latest tarball ). Linux is EL5 ( CentOS ). I
started off getting it to work in VS Studio on windows :

 

1.	I downloaded and installed the System.Data.SQLite ado provider
from phxsoftware.
2.	I wrote a simple test in VS studio 2008 ( writing to a
samba-mount on the linux box ):

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace test

{

  class Program

  {

    static void Main(string[] args)

    {

      System.Data.SQLite.SQLiteConnection dbh=new
System.Data.SQLite.SQLiteConnection();

      dbh.ConnectionString = "Data Source=test.db; Version=3;";

      

      dbh.Open();

    }

  }

}

 

3.	I added in a reference to the System.Data.SQLite.DLL ( not the
managed-only version )
4.	Built in VS, then ran. Worked.
5.	Went to the linux box, ran mono bin/Debug/test.exe, and got :

 

Unhandled Exception: System.DllNotFoundException: System.Data.SQLite.DLL

  at (wrapper managed-to-native)
System.Data.SQLite.UnsafeNativeMethods:sqlite3_open_interop
(byte[],int,intptr&)

  at System.Data.SQLite.SQLite3.Open (System.String strFilename,
SQLiteOpenFlagsEnum flags, Int32 maxPoolSize, Boolean usePool) [0x00000]
in <filename unknown>:0

  at System.Data.SQLite.SQLiteConnection.Open () [0x00000] in <filename
unknown>:0

  at test.Program.Main (System.String[] args) [0x00000] in <filename
unknown>:0

 

6.	did a gacutl -i System.Data.SQLite.DLL. Ran, same result as in
5.
7.	did an xbuild of test.sln, it (worked) and also said :

Copying file from
'/aim/eventus_agent/Sqlite.Net.Binaries/System.Data.SQLite.DLL' to
'/aim/eventus_agent/test/bin/Debug/System.Data.SQLite.DLL'

8.	looked in bin/Debug, saw that I now had a System.Data.SQLite.dll
as well as a System.Data.SQLite.DLL. Ok, taking care of case-sensitivity
issues I suppose.
9.	Ran as in 5, same result.
10.	 Went back to VS, removed the ref, and added the 'Managed Only'
version. Ran, worked.
11.	Went back to linux, did an xbuild, ran, and got :

 

Unhandled Exception: System.EntryPointNotFoundException: sqlite3_open_v2

  at (wrapper managed-to-native)
System.Data.SQLite.UnsafeNativeMethods:sqlite3_open_v2
(byte[],intptr&,int,intptr)

  at System.Data.SQLite.SQLite3.Open (System.String strFilename,
SQLiteOpenFlagsEnum flags, Int32 maxPoolSize, Boolean usePool) [0x00000]
in <filename unknown>:0

  at System.Data.SQLite.SQLiteConnection.Open () [0x00000] in <filename
unknown>:0

  at test.Program.Main (System.String[] args) [0x00000] in <filename
unknown>:0

 

12.	This looked to me like it was having trouble locating the .so
file, so I downloaded the latest .so from sqlite.org, and placed it in
the build directory as libsqlite3.so.
13.	ran, got same result as in 11. Messed around with MONO_PATH and
LD_LIBRARY_PATH...did not help.

 

I am currently out of ideas..I would really like to be able to use the
same source on windows and linux, as that's kind of the idea of Mono to
my mind. I know I could probably use the Mono sqlite package on linux,
but I'd have to have separate builds as far as I know.

 

Dan Winslow
Director of Information Technology, AIM INSTITUTE
1905 Harney Street, Suite 700
Omaha, NE 68102
402-345-5025 x156
dwinslow at aiminstitute.org
www.aiminstitute.org

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-list/attachments/20100118/ea345875/attachment-0001.html 


More information about the Mono-list mailing list