2006-09-14 Mart Roosmaa * SqliteCommand.cs: Handle enums by their underliying type. 2006-09-13 Mart Roosmaa * SqliteDataReader.cs: Implemented GetBytes (). * SqliteCommand.cs: Automatically convert enums to Int32. 2006-08-20 Joshua Tauberer * SqliteConnection.cs: Changed Version property (which is read-only) from internal to public so users can know which version of Sqlite was actually connected to. 2006-05-25 Joshua Tauberer * SqliteCommand.cs: Unnamed parameters by index weren't implemented. 2006-05-13 Joshua Tauberer Reported by Sebastian Dröge . * Sqlite.cs: The binding for sqlite3_last_insert_rowid had the wrong type for the return (int vs long). * SqliteConnection: LastInsertRowId: I didn't want to break the public API, so it casts the long return from that to an int. * SqliteCommand: LastInsertRowID(): Wrap the above property. 2006-03-14 Kamil Skalski * SqliteConnection.cs, Sqlite.cs: Add option for specifying busy timeout in underlying sqlite structure. It allows enabling automatic waiting for lock cleanup in multithreaded usage. 2006-03-11 Joshua Tauberer * Use HGlobal rather than CoTaskMem String-To-Ptr functions in Marshal class. StringToCoTaskMemAnsi is broken (pending it being fixed): it actually uses Ansi, instead of UTF-8. Now, Sqlite2 with no encoding parameter uses UTF-8 encoding. Any Sqlite2 DB since Jan. 20 was encoded in ANSI but unreadable back. 2006-03-07 Kamil Skalski * SqliteDataReader.cs: Handle null values in result as having string type 2006-02-10 Joshua Tauberer * SqliteDataReader: Made 64bit clean. Patch from Joe Shaw . 2006-01-22 Joshua Tauberer Most of the below fixes (in previous changes too) are thanks to Thomas Zoechling and Tom Surace, and the byte[]->blob parameter binding is thanks to . * SqliteCommand.cs: - Don't use a regex for finding parameters in v2. It didn't work when there were no parameters in the query (infinite loop of some sort -- should be filed as a Mono bug I guess). Just scan for parameters names that aren't within quotes. - That wasn't even being called. Now it is. - Marshaling for sqlite3_bind_parameter_name was wrong, as was the unicode call to bind_text16 which was looking for byte length of string while we were providing char length. - Bind byte[] parameters as blobs. - Trim the SQL string. Trailing spaces makes it think another statement is coming along. * SqliteDataReader.cs: When DATE/DATETIME columns come back as Int64s, return them using DateTime.FromFileTime. And don't return Int64s as ints if they aren't in the range of an int. - Check column names case-insensitively (bug 77272). * SqliteParameter.cs: Public parameter names made nicer. * SqliteParameterCollection.cs: Allow users to set parameter names with or without the : prefix that Sqlite wants. * Sqlite.cs: Supporting changes. * SqliteDataReader, SqliteConnection: ToLower with the invariant culture (bug 77372). 2006-01-20 Joshua Tauberer * Sqlite3 calls now use unicode encoding. Sqlite2 calls use ANSI encoding (a superset of the default expected encoding ISO8859-1), unless the new encoding= connection string argument is used, in which case that encoding is used. But that encoding must use a single-byte null terminator, so only UTF-8 is recommended. This removes the dependency on Mono.Posix. If UTF-8 encoding is used, Sqlite2's LIKE, GLOB, LENGTH, and SUBSTR aren't going to respect multibyte chars unless Sqlite was specifically compiled to do so. * SqliteDataReader.this[] is fixed to wrap GetValue. 2006-01-06 Joshua Tauberer * SqliteDataReader.cs: GetFieldType can be called before the reader is positioned on a row. In that case, return the types for the first row. 2006-01-02 Joshua Tauberer * SqliteCommand.cs: It was revealed that preparing statements ahead of time was not possible as table schema changes lead to errors. This needed serious reorganization. SQL syntax errors and BUSY errors are now raised in nice exceptions. * SqliteDataReader.cs: * Use object[] in place of ArrayList for each row. * For Sqlite3, which remembers whether a value was an integer, text, real, or blob, actually return longs, strings, doubles, and byte[]s. * GetDataTypeName() works where possible (Sqlite3). * INT/INTEGER columns are now returned as ints, rather than longs, for Sqlite3. Similarly for DATE and DATETIME columns, now returning DateTimes. * SqliteConnection.cs.cs: BeginTransaction(IsolationLevel) throws InvalidOperationException per the MS docs. * SqliteExceptions.cs: New file with SqliteSyntaxException, SqliteExecutionException, and its subclass SqliteBusyException. 2005-12-27 Jonathan Pryor * SqliteCommand.cs: Use non-obsolete UnixMarshal members. 2005-10-06 Chris Lahey * SqliteCommand.cs (Prepare): Use UnixMarshal here to get proper utf8 behavior. 2005-07-28 Joshua Tauberer * Sqlite.cs, SqliteCommand.cs: Report string error messages in prepare, for version 3. 2005-07-26 Joshua Tauberer SQL commands can have multiple statements within them (i.e. separated by semicolons). Sqlite has to be instructed to process each command. * Sqlite.cs: Pass the sql command as an IntPtr so we can see where pzTail takes us. * SqliteCommand.cs: Lazily load sql_params for good measure. Iterate compile/prepare until each statement in the string has been processed, and retain pointers to each compiled statement. When executing, run all of the statements. 2005-06-14 Thomas Zoechling * Sqlite.cs: - Added sqlite3_bind_* for native Sqlite3 Parameters * SqliteCommand.cs - Added methods for parameter processing/binding (sqlite3 uses bind / sqlite2 uses regEx to extract parameters) - Sqlite uses ':' as delimeter! * SqliteParameterCollection.cs - Chris Turchin fixed a problem in the Parameter Hashmap * SqliteTransaction.cs - The CommandText for the Rollback Command was "COMMIT" ! ->changed :) 2005-05-20 Sureshkumar T * SqliteConnection.cs: - SetConnectionString: trim white spaces, ignore empty connection string options. - SetConnectionString: if file://,db_file starts from pos 7 not 6.