[Mono-list] Sqlite (2.0 profile) crash on Windows

Xavi de Blas xaviblas at gmail.com
Fri Aug 24 07:12:04 EDT 2007


Hello all

I attach a .cs that works on Linux but crashes always on the same
place on Windows, both with mono 1.2.4. Code

I compile the .cs on Linux and then i try on both platforms.

On Windows i put the sqlite3.dll on the running directory coming from here:
http://sqlite.org/download.html
concretely this:
http://sqlite.org/sqlitedll-3_4_0.zip

and i execute doing 'mono sqliteCrashWin.exe' from the mono command prompt.

remember to delete de SqliteTest.db before every new test.

there's also problems with the encoding on windows. I don't know if it's
related to the crash.

I tried also renaming other sqlitexxx.dll files with no success.

I use the SqliteConnection and not the IDbConnection because i don't
know how to  dbcon.LastInsertRowId with the IDbconnection

Any idea? Thanks

--------  code attached ---------

/*
sqliteCrashWin.cs
*/

//Compile with:
//gmcs sqliteCrashWin.cs -r:System.Data.dll -r:Mono.Data.Sqlite.dll


using System;
using System.Data;
//using Mono.Data.SqliteClient;		//1.0 profile
using Mono.Data.Sqlite; 		//2.0 profile

public class Test
{
	public static void Main(string[] args)
	{
		//1.1 profile
		//string connectionString = "URI=file:SqliteTest.db";
		//
		//2.0 profile
		string connectionString = "version = 3; Data source=SqliteTest.db";
//works but characters are not seen ok on windows command prompt


		Console.WriteLine("1 creating file SqliteTest.db  ... \n(if exists,
DELETE IT BEFORE RUNNING THIS PROGRAM)");
/*
		IDbConnection dbcon;
		dbcon = (IDbConnection) new SqliteConnection(connectionString);
		dbcon.Open();
		IDbCommand dbcmd = dbcon.CreateCommand();
*/
		SqliteConnection dbcon;
		dbcon = new SqliteConnection(connectionString);
		dbcon.Open();
		SqliteCommand dbcmd = dbcon.CreateCommand();

		Console.WriteLine("2 creating 1st table works...");

		string sql =
		        "CREATE TABLE employee (" +
		           "firstname varchar(32)," +
		           "lastname varchar(32))";
		dbcmd.CommandText = sql;
		dbcmd.ExecuteNonQuery();

		Console.WriteLine("3 creating 2nd table works...");

		sql =
		        "CREATE TABLE employeeText (" +
		           "firstname TEXT," +
		           "lastname TEXT)";
		dbcmd.CommandText = sql;
		dbcmd.ExecuteNonQuery();

		Console.WriteLine("4 creating 3d table works...");

		sql =
			"CREATE TABLE jump ( " +
			"uniqueID INTEGER PRIMARY KEY, " +
			"personID INT, " +
			"sessionID INT, " +
			"type varchar(32), " +
			"tv FLOAT, " +
			"tc FLOAT, " +
			"fall INT, " +
			"weight varchar(32), " +
			"description varchar(32) )";
		dbcmd.CommandText = sql;
		dbcmd.ExecuteNonQuery();

		Console.WriteLine("5 creating 4th table CRASHES ON WINDOWS...");
		sql =
			"CREATE TABLE jumpText ( " +
			"uniqueID INTEGER PRIMARY KEY, " +
			"personID INT, " +
			"sessionID INT, " +
			"type TEXT, " +
			"tv FLOAT, " +
			"tc FLOAT, " +
			"fall INT, " +
			"weight TEXT, " +
			"description TEXT )";
		dbcmd.CommandText = sql;
		dbcmd.ExecuteNonQuery();


		Console.WriteLine("6 inserting data table 1...");

		sql =
			"INSERT INTO employee (firstname, lastname) " +
			"VALUES ('my1stName', 'my2ndName')";
		dbcmd.CommandText = sql;
		dbcmd.ExecuteNonQuery();

		Console.WriteLine("7 selecting data table 1...");

		sql =
			"SELECT firstname, lastname " +
			"FROM employee";
		dbcmd.CommandText = sql;
		//IDataReader reader = dbcmd.ExecuteReader();
		SqliteDataReader reader = dbcmd.ExecuteReader();

		while(reader.Read()) {
			string FirstName = reader.GetString (0);
			string LastName = reader.GetString (1);
			Console.WriteLine("Name: " +
					FirstName + " " + LastName);
		}
		
		Console.WriteLine("8 clean up...");

		// clean up
		reader.Close();
		reader = null;
		dbcmd.Dispose();
		dbcmd = null;
		dbcon.Close();
		dbcon = null;
	}
}


More information about the Mono-list mailing list