Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | 1.0.30.0 |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | sourceforge |
Files: | files | file ages | folders |
SHA1: |
c03b78555a11d958b7caeaa041cfb694 |
User & Date: | rmsimpson 2006-07-02 06:45:42.000 |
Context
2006-07-02
| ||
06:48 | Added sqlite3_key and rekey check-in: 02670a9729 user: rmsimpson tags: sourceforge | |
06:45 | 1.0.30.0 check-in: c03b78555a user: rmsimpson tags: sourceforge | |
2006-06-08
| ||
04:19 | 3.3.6 check-in: b1ba6be10a user: rmsimpson tags: sourceforge | |
Changes
Changes to Doc/SQLite.NET.chm.
cannot compute difference between binary files
Changes to Doc/SQLite.NET.ndoc.
|
| > | | | < < < < < | < < < | | | < | < < < < < | | < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?xml version="1.0" encoding="utf-8" standalone="yes"?> <project SchemaVersion="2.0"> <assemblies> <assembly location="..\bin\System.Data.SQLite.DLL" documentation="..\bin\System.Data.SQLite.xml" /> </assemblies> <documenters> <documenter name="MSDN-CHM"> <property name="IncludeFavorites" value="True" /> <property name="SdkLinksOnWeb" value="True" /> <property name="OutputDirectory" value=".\doc\" /> <property name="HtmlHelpName" value="SQLite.NET" /> <property name="Title" value="SQLite ADO.NET 2.0 Provider" /> <property name="AdditionalContentResourceDirectory" value=".\Extra\" /> <property name="AssemblyVersionInfo" value="AssemblyVersion" /> <property name="FeedbackEmailAddress" value="robert@blackcastlesoft.com" /> <property name="DocumentAttributes" value="False" /> <property name="IncludeDefaultThreadSafety" value="False" /> </documenter> <documenter name="XML"> <property name="OutputFile" value=".\doc\doc.xml" /> </documenter> <documenter name="Intellisense"> <property name="OutputDirectory" value=".\intellisense\" /> </documenter> </documenters> </project> |
Changes to SQLite.Interop/SQLite.Interop.rc.
︙ | ︙ | |||
49 50 51 52 53 54 55 | ///////////////////////////////////////////////////////////////////////////// // // Version // VS_VERSION_INFO VERSIONINFO | | | | | 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | ///////////////////////////////////////////////////////////////////////////// // // Version // VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,30,0 PRODUCTVERSION 1,0,0,0 FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x4L FILETYPE 0x2L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904b0" BEGIN VALUE "Comments", "http://sqlite.phxsoftware.com" VALUE "FileDescription", "SQLite.NET Interop Library" VALUE "FileVersion", "1.0.30.0" VALUE "InternalName", "SQLite.Interop.DLL" VALUE "LegalCopyright", "Released to the public domain" VALUE "OriginalFilename", "SQLite3.DLL 3.3.6" VALUE "ProductName", "SQLite.NET" VALUE "ProductVersion", "1.0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1200 |
︙ | ︙ |
Changes to SQLite.Interop/SQLite.Interop.vcproj.
︙ | ︙ | |||
107 108 109 110 111 112 113 | /> <Tool Name="VCWebDeploymentTool" /> <Tool Name="VCPostBuildEventTool" Description="Merging binaries ..." | | | 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | /> <Tool Name="VCWebDeploymentTool" /> <Tool Name="VCPostBuildEventTool" Description="Merging binaries ..." CommandLine="..\bin\tools\mergebin.exe /S:.clr ..\System.Data.SQLite\bin\$(TargetFileName) "$(TargetPath)"
sn -Ra "$(TargetPath)" ..\System.Data.SQLite\System.Data.SQLite.snk
" /> </Configuration> <Configuration Name="Release|Pocket PC 2003 (ARMV4)" OutputDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" IntermediateDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="2" |
︙ | ︙ | |||
186 187 188 189 190 191 192 | /> <Tool Name="VCCodeSignTool" /> <Tool Name="VCPostBuildEventTool" Description="Merging binaries ..." | | | 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 | /> <Tool Name="VCCodeSignTool" /> <Tool Name="VCPostBuildEventTool" Description="Merging binaries ..." CommandLine="..\bin\tools\mergebin.exe /S:.clr ..\System.Data.SQLite\bin\CompactFramework\$(TargetFileName) "$(TargetPath)"
sn -Ra "$(TargetPath)" ..\System.Data.SQLite\System.Data.SQLite.CF.snk
" /> <DeploymentTool ForceDirty="-1" RemoteDirectory="\Program Files\testce" RegisterOutput="0" AdditionalFiles="" /> |
︙ | ︙ | |||
283 284 285 286 287 288 289 | /> <Tool Name="VCWebDeploymentTool" /> <Tool Name="VCPostBuildEventTool" Description="Merging binaries ..." | | | 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 | /> <Tool Name="VCWebDeploymentTool" /> <Tool Name="VCPostBuildEventTool" Description="Merging binaries ..." CommandLine="..\bin\tools\mergebin.exe /S:.clr ..\System.Data.SQLite\bin\$(TargetFileName) "$(TargetPath)"
sn -Ra "$(TargetPath)" ..\System.Data.SQLite\System.Data.SQLite.snk
" /> </Configuration> <Configuration Name="Release|x64" OutputDirectory="x64\$(ConfigurationName)" IntermediateDirectory="x64\$(ConfigurationName)" ConfigurationType="2" |
︙ | ︙ | |||
372 373 374 375 376 377 378 | /> <Tool Name="VCWebDeploymentTool" /> <Tool Name="VCPostBuildEventTool" Description="Merging binaries ..." | | | 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 | /> <Tool Name="VCWebDeploymentTool" /> <Tool Name="VCPostBuildEventTool" Description="Merging binaries ..." CommandLine="..\bin\tools\mergebin.exe /S:.clr ..\System.Data.SQLite\bin\$(TargetFileName) "$(TargetPath)"
sn -Ra "$(TargetPath)" ..\System.Data.SQLite\System.Data.SQLite.snk
" /> </Configuration> <Configuration Name="Debug|Win32" OutputDirectory="$(ConfigurationName)" IntermediateDirectory="$(ConfigurationName)" ConfigurationType="2" |
︙ | ︙ |
Changes to SQLite.Interop/fixsource.vbs.
︙ | ︙ | |||
24 25 26 27 28 29 30 31 32 | WScript.StdOut.WriteLine "Updating pager.c" Set srcFile = fso.CreateTextFile("src\pager.c", true) srcFile.Write(newFileContents) srcFile.Close() End If End If End Sub | > > > > > > > > > > > > | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | WScript.StdOut.WriteLine "Updating pager.c" Set srcFile = fso.CreateTextFile("src\pager.c", true) srcFile.Write(newFileContents) srcFile.Close() End If End If Set srcFile = fso.OpenTextFile("src\sqlite3.def", 1) srcFileContents = srcFile.ReadAll() srcFile.Close() If InStr(1, srcFileContents, "sqlite3_key", 1) = 0 Then newFileContents = srcFileContents & Chr(10) & "sqlite3_key" & Chr(10) & "sqlite3_rekey" & Chr(10) WScript.StdOut.WriteLine "Updating sqlite3.def" set srcFile = fso.CreateTextFile("src\sqlite3.def", true) srcFile.Write(newFileContents) srcFile.Close() End If End Sub |
Changes to SQLite.Interop/interop.c.
︙ | ︙ | |||
13 14 15 16 17 18 19 | #ifdef OS_WIN #include <tchar.h> typedef void (WINAPI *SQLITEUSERFUNC)(void *, int, void **); typedef int (WINAPI *SQLITECOLLATION)(int, const void *, int, const void*); | | | | | 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #ifdef OS_WIN #include <tchar.h> typedef void (WINAPI *SQLITEUSERFUNC)(void *, int, void **); typedef int (WINAPI *SQLITECOLLATION)(int, const void *, int, const void*); typedef void (WINAPI *SQLITEUPDATEHOOK)(int, const char *, int, const char *, int, sqlite_int64); typedef int (WINAPI *SQLITECOMMITHOOK)(); typedef void (WINAPI *SQLITEROLLBACKHOOK)(); typedef HANDLE (WINAPI *CREATEFILEW)( LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, |
︙ | ︙ | |||
56 57 58 59 60 61 62 | } __declspec(dllexport) void WINAPI sqlite3_sleep_interop(int milliseconds) { Sleep(milliseconds); } | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | } __declspec(dllexport) void WINAPI sqlite3_sleep_interop(int milliseconds) { Sleep(milliseconds); } int SetCompression(const wchar_t *pwszFilename, unsigned short ufLevel) { #ifdef FSCTL_SET_COMPRESSION HMODULE hMod = GetModuleHandle(_T("KERNEL32")); CREATEFILEW pfunc; HANDLE hFile; unsigned long dw = 0; |
︙ | ︙ | |||
689 690 691 692 693 694 695 | __declspec(dllexport) const void * WINAPI sqlite3_column_origin_name16_interop(sqlite3_stmt *stmt, int iCol, int *plen) { const void *pval = sqlite3_column_origin_name16(stmt, iCol); *plen = (pval != 0) ? wcslen((wchar_t *)pval) * sizeof(wchar_t) : 0; return pval; } | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 | __declspec(dllexport) const void * WINAPI sqlite3_column_origin_name16_interop(sqlite3_stmt *stmt, int iCol, int *plen) { const void *pval = sqlite3_column_origin_name16(stmt, iCol); *plen = (pval != 0) ? wcslen((wchar_t *)pval) * sizeof(wchar_t) : 0; return pval; } __declspec(dllexport) int WINAPI sqlite3_table_column_metadata_interop(sqlite3 *db, const char *zDbName, const char *zTableName, const char *zColumnName, char **pzDataType, char **pzCollSeq, int *pNotNull, int *pPrimaryKey, int *pAutoinc, int *pdtLen, int *pcsLen) { int n = sqlite3_table_column_metadata(db, zDbName, zTableName, zColumnName, pzDataType, pzCollSeq, pNotNull, pPrimaryKey, pAutoinc); *pdtLen = (*pzDataType != 0) ? strlen(*pzDataType) : 0; *pcsLen = (*pzCollSeq != 0) ? strlen(*pzCollSeq) : 0; return n; } void sqlite3_update_callback(void *pArg, int type, const char *pDatabase, const char *pTable, sqlite_int64 rowid) { SQLITEUPDATEHOOK func = (SQLITEUPDATEHOOK)pArg; func(type, pDatabase, lstrlenA(pDatabase), pTable, lstrlenA(pTable), rowid); } int sqlite3_commit_callback(void *pArg) { return ((SQLITECOMMITHOOK)pArg)(); } void sqlite3_rollback_callback(void *pArg) { ((SQLITEROLLBACKHOOK)pArg)(); } __declspec(dllexport) void * WINAPI sqlite3_update_hook_interop(sqlite3 *pDb, SQLITEUPDATEHOOK func) { return sqlite3_update_hook(pDb, sqlite3_update_callback, func); } __declspec(dllexport) void * WINAPI sqlite3_commit_hook_interop(sqlite3 *pDb, SQLITECOMMITHOOK func) { return sqlite3_commit_hook(pDb, sqlite3_commit_callback, func); } __declspec(dllexport) void * WINAPI sqlite3_rollback_hook_interop(sqlite3 *pDb, SQLITEROLLBACKHOOK func) { return sqlite3_rollback_hook(pDb, sqlite3_rollback_callback, func); } #endif // OS_WIN |
Changes to SQLite.Interop/merge.h.
1 | // This code was automatically generated from assembly | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // This code was automatically generated from assembly // C:\Src\SQLite.NET\System.Data.SQLite\bin\CompactFramework\System.Data.SQLite.dll #include <windef.h> #pragma data_seg(".clr") #pragma comment(linker, "/SECTION:.clr,ER") char __ph[116184] = {0}; // The number of bytes to reserve #pragma data_seg() typedef BOOL (WINAPI *DLLMAIN)(HANDLE, DWORD, LPVOID); typedef struct EXTRA_STUFF { DWORD dwNativeEntryPoint; } EXTRA_STUFF, *LPEXTRA_STUFF; |
︙ | ︙ |
Changes to SQLite.Interop/merge_full.h.
1 | // This code was automatically generated from assembly | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // This code was automatically generated from assembly // C:\Src\SQLite.NET\System.Data.SQLite\bin\System.Data.SQLite.dll #include <windef.h> #pragma data_seg(".clr") #pragma comment(linker, "/SECTION:.clr,ER") char __ph[124740] = {0}; // The number of bytes to reserve #pragma data_seg() typedef BOOL (WINAPI *DLLMAIN)(HANDLE, DWORD, LPVOID); typedef struct EXTRA_STUFF { DWORD dwNativeEntryPoint; } EXTRA_STUFF, *LPEXTRA_STUFF; |
︙ | ︙ |
Changes to System.Data.SQLite/AssemblyInfo.cs.
︙ | ︙ | |||
41 42 43 44 45 46 47 | // Major Version // Minor Version // Build Number // Revision // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: | | | | 41 42 43 44 45 46 47 48 49 50 51 | // Major Version // Minor Version // Build Number // Revision // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: [assembly: AssemblyVersion("1.0.30.0")] #if !PLATFORM_COMPACTFRAMEWORK [assembly: AssemblyFileVersion("1.0.30.0")] #endif |
Changes to System.Data.SQLite/SQLite3.cs.
︙ | ︙ | |||
80 81 82 83 84 85 86 | internal override void SetTimeout(int nTimeoutMS) { int n = UnsafeNativeMethods.sqlite3_busy_timeout_interop(_sql, nTimeoutMS); if (n > 0) throw new SQLiteException(n, SQLiteLastError()); } | | < > | | | | | < > | | < > | < > | 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | internal override void SetTimeout(int nTimeoutMS) { int n = UnsafeNativeMethods.sqlite3_busy_timeout_interop(_sql, nTimeoutMS); if (n > 0) throw new SQLiteException(n, SQLiteLastError()); } //internal override void Execute(string strSql) //{ // IntPtr p; // string str = strSql; // int len; // int n = UnsafeNativeMethods.sqlite3_exec_interop(_sql, ToUTF8(strSql), IntPtr.Zero, IntPtr.Zero, out p, out len); // if (p != IntPtr.Zero) // { // str = base.ToString(p, len); // UnsafeNativeMethods.sqlite3_free_interop(p); // } // if (n > 0) throw new SQLiteException(n, str); //} internal override bool Step(SQLiteStatement stmt) { int n; long dwtick = 0; Random rnd = null; |
︙ | ︙ | |||
199 200 201 202 203 204 205 | } internal override SQLiteStatement Prepare(string strSql, SQLiteStatement previous, out string strRemain) { IntPtr stmt = IntPtr.Zero; IntPtr ptr = IntPtr.Zero; int len = 0; | < > > > > > | | | | | | | | | | > > | 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 | } internal override SQLiteStatement Prepare(string strSql, SQLiteStatement previous, out string strRemain) { IntPtr stmt = IntPtr.Zero; IntPtr ptr = IntPtr.Zero; int len = 0; int n = 17; int retries = 0; byte[] b = ToUTF8(strSql); unsafe { fixed (byte* psql = b) { while (n == 17 && retries < 3) { n = UnsafeNativeMethods.sqlite3_prepare_interop(_sql, (IntPtr)psql, b.Length - 1, out stmt, out ptr, out len); retries++; } if (n > 0) throw new SQLiteException(n, SQLiteLastError()); strRemain = ToString(ptr, len); SQLiteStatement cmd = null; if (stmt != IntPtr.Zero) cmd = new SQLiteStatement(this, stmt, strSql.Substring(0, strSql.Length - strRemain.Length), previous); return cmd; } } } internal override void Bind_Double(SQLiteStatement stmt, int index, double value) { int n = UnsafeNativeMethods.sqlite3_bind_double_interop(stmt._sqlite_stmt, index, ref value); if (n > 0) throw new SQLiteException(n, SQLiteLastError()); } |
︙ | ︙ | |||
289 290 291 292 293 294 295 296 297 298 299 300 | } internal override string ColumnName(SQLiteStatement stmt, int index) { int len; return ToString(UnsafeNativeMethods.sqlite3_column_name_interop(stmt._sqlite_stmt, index, out len), len); } internal override string ColumnType(SQLiteStatement stmt, int index, out TypeAffinity nAffinity) { int len; IntPtr p = UnsafeNativeMethods.sqlite3_column_decltype_interop(stmt._sqlite_stmt, index, out len); | > > > > > > | | 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 | } internal override string ColumnName(SQLiteStatement stmt, int index) { int len; return ToString(UnsafeNativeMethods.sqlite3_column_name_interop(stmt._sqlite_stmt, index, out len), len); } internal override TypeAffinity ColumnAffinity(SQLiteStatement stmt, int index) { return UnsafeNativeMethods.sqlite3_column_type_interop(stmt._sqlite_stmt, index); } internal override string ColumnType(SQLiteStatement stmt, int index, out TypeAffinity nAffinity) { int len; IntPtr p = UnsafeNativeMethods.sqlite3_column_decltype_interop(stmt._sqlite_stmt, index, out len); nAffinity = ColumnAffinity(stmt, index); if (p != IntPtr.Zero) return ToString(p, len); else { switch (nAffinity) { case TypeAffinity.Int64: return "BIGINT"; |
︙ | ︙ | |||
438 439 440 441 442 443 444 | else nCopied = 0; return nCopied; } internal override bool IsNull(SQLiteStatement stmt, int index) { | | | 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 | else nCopied = 0; return nCopied; } internal override bool IsNull(SQLiteStatement stmt, int index) { return (ColumnAffinity(stmt, index) == TypeAffinity.Null); } internal override int AggregateCount(IntPtr context) { return UnsafeNativeMethods.sqlite3_aggregate_count_interop(context); } |
︙ | ︙ | |||
562 563 564 565 566 567 568 | } internal override IntPtr AggregateContext(IntPtr context) { return UnsafeNativeMethods.sqlite3_aggregate_context_interop(context, 1); } | < < < < < | > > > | > > > > > > > > > > > > | 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 | } internal override IntPtr AggregateContext(IntPtr context) { return UnsafeNativeMethods.sqlite3_aggregate_context_interop(context, 1); } internal override void SetPassword(byte[] passwordBytes) { int n = UnsafeNativeMethods.sqlite3_key_interop(_sql, passwordBytes, passwordBytes.Length); if (n > 0) throw new SQLiteException(n, SQLiteLastError()); } internal override void ChangePassword(byte[] newPasswordBytes) { int n = UnsafeNativeMethods.sqlite3_rekey_interop(_sql, newPasswordBytes, (newPasswordBytes == null) ? 0 : newPasswordBytes.Length); if (n > 0) throw new SQLiteException(n, SQLiteLastError()); } internal override void SetUpdateHook(SQLiteUpdateCallback func) { UnsafeNativeMethods.sqlite3_update_hook_interop(_sql, func); } internal override void SetCommitHook(SQLiteCommitCallback func) { UnsafeNativeMethods.sqlite3_commit_hook_interop(_sql, func); } internal override void SetRollbackHook(SQLiteRollbackCallback func) { UnsafeNativeMethods.sqlite3_rollback_hook_interop(_sql, func); } } } |
Changes to System.Data.SQLite/SQLite3_UTF16.cs.
︙ | ︙ | |||
52 53 54 55 56 57 58 | internal override string SQLiteLastError() { int len; return ToString(UnsafeNativeMethods.sqlite3_errmsg16_interop(_sql, out len), len); } | < < < < < < < < < < < < < < < < < < < < < < < | 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | internal override string SQLiteLastError() { int len; return ToString(UnsafeNativeMethods.sqlite3_errmsg16_interop(_sql, out len), len); } internal override void Bind_DateTime(SQLiteStatement stmt, int index, DateTime dt) { Bind_Text(stmt, index, ToString(dt)); } internal override string Bind_ParamName(SQLiteStatement stmt, int index) { |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteBase.cs.
︙ | ︙ | |||
48 49 50 51 52 53 54 | internal abstract void Close(); /// <summary> /// Sets the busy timeout on the connection. SQLiteCommand will call this before executing any command. /// </summary> /// <param name="nTimeoutMS">The number of milliseconds to wait before returning SQLITE_BUSY</param> internal abstract void SetTimeout(int nTimeoutMS); /// <summary> | < < < < < < | 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | internal abstract void Close(); /// <summary> /// Sets the busy timeout on the connection. SQLiteCommand will call this before executing any command. /// </summary> /// <param name="nTimeoutMS">The number of milliseconds to wait before returning SQLITE_BUSY</param> internal abstract void SetTimeout(int nTimeoutMS); /// <summary> /// Returns the text of the last error issued by SQLite /// </summary> /// <returns></returns> internal abstract string SQLiteLastError(); /// <summary> /// Prepares a SQL statement for execution. |
︙ | ︙ | |||
104 105 106 107 108 109 110 111 112 113 114 115 116 117 | internal abstract int Bind_ParamCount(SQLiteStatement stmt); internal abstract string Bind_ParamName(SQLiteStatement stmt, int index); internal abstract int Bind_ParamIndex(SQLiteStatement stmt, string paramName); internal abstract int ColumnCount(SQLiteStatement stmt); internal abstract string ColumnName(SQLiteStatement stmt, int index); internal abstract string ColumnType(SQLiteStatement stmt, int index, out TypeAffinity nAffinity); internal abstract int ColumnIndex(SQLiteStatement stmt, string columnName); internal abstract string ColumnOriginalName(SQLiteStatement stmt, int index); internal abstract string ColumnDatabaseName(SQLiteStatement stmt, int index); internal abstract string ColumnTableName(SQLiteStatement stmt, int index); internal abstract void ColumnMetaData(string dataBase, string table, string column, out string dataType, out string collateSequence, out bool notNull, out bool primaryKey, out bool autoIncrement); | > | 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | internal abstract int Bind_ParamCount(SQLiteStatement stmt); internal abstract string Bind_ParamName(SQLiteStatement stmt, int index); internal abstract int Bind_ParamIndex(SQLiteStatement stmt, string paramName); internal abstract int ColumnCount(SQLiteStatement stmt); internal abstract string ColumnName(SQLiteStatement stmt, int index); internal abstract TypeAffinity ColumnAffinity(SQLiteStatement stmt, int index); internal abstract string ColumnType(SQLiteStatement stmt, int index, out TypeAffinity nAffinity); internal abstract int ColumnIndex(SQLiteStatement stmt, string columnName); internal abstract string ColumnOriginalName(SQLiteStatement stmt, int index); internal abstract string ColumnDatabaseName(SQLiteStatement stmt, int index); internal abstract string ColumnTableName(SQLiteStatement stmt, int index); internal abstract void ColumnMetaData(string dataBase, string table, string column, out string dataType, out string collateSequence, out bool notNull, out bool primaryKey, out bool autoIncrement); |
︙ | ︙ | |||
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 | internal abstract void ReturnInt64(IntPtr context, Int64 value); internal abstract void ReturnNull(IntPtr context); internal abstract void ReturnText(IntPtr context, string value); internal abstract void SetPassword(byte[] passwordBytes); internal abstract void ChangePassword(byte[] newPasswordBytes); protected virtual void Dispose(bool bDisposing) { } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } } } | > > > > | 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 | internal abstract void ReturnInt64(IntPtr context, Int64 value); internal abstract void ReturnNull(IntPtr context); internal abstract void ReturnText(IntPtr context, string value); internal abstract void SetPassword(byte[] passwordBytes); internal abstract void ChangePassword(byte[] newPasswordBytes); internal abstract void SetUpdateHook(SQLiteUpdateCallback func); internal abstract void SetCommitHook(SQLiteCommitCallback func); internal abstract void SetRollbackHook(SQLiteRollbackCallback func); protected virtual void Dispose(bool bDisposing) { } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } } } |
Changes to System.Data.SQLite/SQLiteConnection.cs.
︙ | ︙ | |||
10 11 12 13 14 15 16 | using System; using System.Data; using System.Data.Common; using System.Collections.Generic; using System.Globalization; using System.ComponentModel; | < < < < < < < < < < < < < < < < < < < | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | using System; using System.Data; using System.Data.Common; using System.Collections.Generic; using System.Globalization; using System.ComponentModel; /// <summary> /// SQLite implentation of DbConnection. /// </summary> /// <remarks> /// The <see cref="ConnectionString">ConnectionString</see> property of the SQLiteConnection class can contain the following parameter(s), delimited with a semi-colon: /// <list type="table"> /// <listheader> |
︙ | ︙ | |||
131 132 133 134 135 136 137 | /// The database filename minus path and extension /// </summary> private string _dataSource; /// <summary> /// Temporary password storage, emptied after the database has been opened /// </summary> private byte[] _password; | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 | /// The database filename minus path and extension /// </summary> private string _dataSource; /// <summary> /// Temporary password storage, emptied after the database has been opened /// </summary> private byte[] _password; private event SQLiteUpdateEventHandler _updateHandler; private event SQLiteCommitHandler _commitHandler; private event EventHandler _rollbackHandler; private SQLiteUpdateCallback _updateCallback; private SQLiteCommitCallback _commitCallback; private SQLiteRollbackCallback _rollbackCallback; /// <summary> /// This event is raised whenever the database is opened or closed. /// </summary> public override event StateChangeEventHandler StateChange; /// <summary> /// This event is raised whenever SQLite makes an update/delete/insert into the database on /// this connection. It only applies to the given connection. /// </summary> public event SQLiteUpdateEventHandler Update { add { if (_updateHandler == null) { _updateCallback = new SQLiteUpdateCallback(UpdateCallback); _sql.SetUpdateHook(_updateCallback); } _updateHandler += value; } remove { _updateHandler -= value; if (_updateHandler == null) { _sql.SetUpdateHook(null); _updateCallback = null; } } } private void UpdateCallback(int type, IntPtr database, int databaseLen, IntPtr table, int tableLen, Int64 rowid) { _updateHandler(this, new UpdateEventArgs( _sql.UTF8ToString(database, databaseLen), _sql.UTF8ToString(table, tableLen), (UpdateEventType)type, rowid)); } /// <summary> /// This event is raised whenever SQLite is committing a transaction. /// Return non-zero to trigger a rollback /// </summary> public event SQLiteCommitHandler Commit { add { if (_commitHandler == null) { _commitCallback = new SQLiteCommitCallback(CommitCallback); _sql.SetCommitHook(_commitCallback); } _commitHandler += value; } remove { _commitHandler -= value; if (_commitHandler == null) { _sql.SetCommitHook(null); _commitCallback = null; } } } /// <summary> /// This event is raised whenever SQLite is committing a transaction. /// Return non-zero to trigger a rollback /// </summary> public event EventHandler RollBack { add { if (_rollbackHandler == null) { _rollbackCallback = new SQLiteRollbackCallback(RollbackCallback); _sql.SetRollbackHook(_rollbackCallback); } _rollbackHandler += value; } remove { _rollbackHandler -= value; if (_rollbackHandler == null) { _sql.SetRollbackHook(null); _rollbackCallback = null; } } } private int CommitCallback() { CommitEventArgs e = new CommitEventArgs(); _commitHandler(this, e); return (e.AbortTransaction == true) ? 1 : 0; } private void RollbackCallback() { _rollbackHandler(this, EventArgs.Empty); } ///<overloads> /// Constructs a new SQLiteConnection object /// </overloads> /// <summary> /// Default constructor /// </summary> |
︙ | ︙ | |||
187 188 189 190 191 192 193 | { foreach (DataRow row in tbl.Rows) { str = row[0].ToString(); if (String.Compare(str, "main", true, CultureInfo.InvariantCulture) != 0 && String.Compare(str, "temp", true, CultureInfo.InvariantCulture) != 0) { | > > | > > | 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 | { foreach (DataRow row in tbl.Rows) { str = row[0].ToString(); if (String.Compare(str, "main", true, CultureInfo.InvariantCulture) != 0 && String.Compare(str, "temp", true, CultureInfo.InvariantCulture) != 0) { using (SQLiteCommand cmd = CreateCommand()) { cmd.CommandText = String.Format(CultureInfo.InvariantCulture, "ATTACH DATABASE '{0}' AS [{1}]", row[1], row[0]); cmd.ExecuteNonQuery(); } } } } } } #if PLATFORM_COMPACTFRAMEWORK |
︙ | ︙ | |||
258 259 260 261 262 263 264 | /// </summary> /// <param name="databaseFileName">The file to decompress</param> static public void DecompressFile(string databaseFileName) { UnsafeNativeMethods.sqlite3_decompressfile(databaseFileName); } | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 351 352 353 354 355 356 357 358 359 360 361 362 363 364 | /// </summary> /// <param name="databaseFileName">The file to decompress</param> static public void DecompressFile(string databaseFileName) { UnsafeNativeMethods.sqlite3_decompressfile(databaseFileName); } /// <summary> /// Raises the state change event when the state of the connection changes /// </summary> /// <param name="newState">The new state. If it is different from the previous state, an event is raised.</param> internal void OnStateChange(ConnectionState newState) { ConnectionState oldState = _connectionState; |
︙ | ︙ | |||
362 363 364 365 366 367 368 | /// <summary> /// Creates a new SQLiteTransaction if one isn't already active on the connection. /// </summary> /// <param name="isolationLevel">SQLite doesn't support varying isolation levels, so this parameter is ignored.</param> /// <returns>Returns a SQLiteTransaction object.</returns> public new SQLiteTransaction BeginTransaction(IsolationLevel isolationLevel) { | | | | | 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 | /// <summary> /// Creates a new SQLiteTransaction if one isn't already active on the connection. /// </summary> /// <param name="isolationLevel">SQLite doesn't support varying isolation levels, so this parameter is ignored.</param> /// <returns>Returns a SQLiteTransaction object.</returns> public new SQLiteTransaction BeginTransaction(IsolationLevel isolationLevel) { return BeginTransaction(false); } /// <summary> /// Creates a new SQLiteTransaction if one isn't already active on the connection. /// </summary> /// <returns>Returns a SQLiteTransaction object.</returns> public new SQLiteTransaction BeginTransaction() { return BeginTransaction(false); } /// <summary> /// Forwards to the local BeginTransaction() function /// </summary> /// <param name="isolationLevel"></param> /// <returns></returns> protected override DbTransaction BeginDbTransaction(IsolationLevel isolationLevel) { return BeginTransaction(isolationLevel, false); } /// <summary> /// Not implemented /// </summary> /// <param name="databaseName"></param> public override void ChangeDatabase(string databaseName) |
︙ | ︙ | |||
678 679 680 681 682 683 684 | _sql.SetPassword(System.Text.UTF8Encoding.UTF8.GetBytes(password)); else if (_password != null) _sql.SetPassword(_password); _password = null; _dataSource = System.IO.Path.GetFileNameWithoutExtension(fileName); | > > > > > > > > > | > > > > > > | > > > | > > > > | > | < > > | 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 | _sql.SetPassword(System.Text.UTF8Encoding.UTF8.GetBytes(password)); else if (_password != null) _sql.SetPassword(_password); _password = null; _dataSource = System.IO.Path.GetFileNameWithoutExtension(fileName); OnStateChange(ConnectionState.Open); using (SQLiteCommand cmd = CreateCommand()) { string defValue; defValue = FindKey(opts, "Synchronous", "Normal"); if (String.Compare(defValue, "Normal", true, CultureInfo.InvariantCulture) != 0) { cmd.CommandText = String.Format(CultureInfo.InvariantCulture, "PRAGMA Synchronous={0}", defValue); cmd.ExecuteNonQuery(); } defValue = FindKey(opts, "Cache Size", "2000"); if (Convert.ToInt32(defValue) != 2000) { cmd.CommandText = String.Format(CultureInfo.InvariantCulture, "PRAGMA Cache_Size={0}", defValue); cmd.ExecuteNonQuery(); } if (fileName != ":memory:") { defValue = FindKey(opts, "Page Size", "1024"); if (Convert.ToInt32(defValue) != 1024) { cmd.CommandText = String.Format(CultureInfo.InvariantCulture, "PRAGMA Page_Size={0}", defValue); cmd.ExecuteNonQuery(); } } } #if !PLATFORM_COMPACTFRAMEWORK if (FindKey(opts, "Enlist", "Y").ToUpper()[0] == 'Y' && Transactions.Transaction.Current != null) EnlistTransaction(Transactions.Transaction.Current); #endif } catch (SQLiteException) |
︙ | ︙ | |||
785 786 787 788 789 790 791 792 793 794 795 796 797 798 | if (databasePassword.Length == 0) databasePassword = null; _password = databasePassword; } private const string _dataDirectory = "|DataDirectory|"; private string ExpandFileName(string sourceFile) { if (String.IsNullOrEmpty(sourceFile)) return sourceFile; if (sourceFile.StartsWith(_dataDirectory, StringComparison.OrdinalIgnoreCase)) { string dataDirectory; | > > > > > | 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 | if (databasePassword.Length == 0) databasePassword = null; _password = databasePassword; } private const string _dataDirectory = "|DataDirectory|"; /// <summary> /// Expand the filename of the data source, resolving the |DataDirectory| macro as appropriate. /// </summary> /// <param name="sourceFile">The database filename to expand</param> /// <returns>The expanded path and filename of the filename</returns> private string ExpandFileName(string sourceFile) { if (String.IsNullOrEmpty(sourceFile)) return sourceFile; if (sourceFile.StartsWith(_dataDirectory, StringComparison.OrdinalIgnoreCase)) { string dataDirectory; |
︙ | ︙ | |||
1767 1768 1769 1770 1771 1772 1773 | tbl.EndLoadData(); tbl.AcceptChanges(); return tbl; } } | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 | tbl.EndLoadData(); tbl.AcceptChanges(); return tbl; } } /// <summary> /// The I/O file cache flushing behavior for the connection /// </summary> public enum SynchronizationModes { /// <summary> /// Normal file flushing at critical sections of the code /// </summary> Normal = 0, /// <summary> /// Full file flushing after every write operation /// </summary> Full = 1, /// <summary> /// Use the default operating system's file flushing, SQLite does not explicitly flush the file buffers after writing /// </summary> Off = 2, } internal delegate void SQLiteUpdateCallback(int type, IntPtr database, int databaseLen, IntPtr table, int tableLen, Int64 rowid); internal delegate int SQLiteCommitCallback(); internal delegate void SQLiteRollbackCallback(); /// <summary> /// Raised when a transaction is about to be committed. To roll back a transaction, set the /// rollbackTrans boolean value to true. /// </summary> /// <param name="sender">The connection committing the transaction</param> /// <param name="e">Event arguments on the transaction</param> public delegate void SQLiteCommitHandler(object sender, CommitEventArgs e); /// <summary> /// Raised when data is inserted, updated and deleted on a given connection /// </summary> /// <param name="sender">The connection committing the transaction</param> /// <param name="e">The event parameters which triggered the event</param> public delegate void SQLiteUpdateEventHandler(object sender, UpdateEventArgs e); /// <summary> /// Whenever an update event is triggered on a connection, this enum will indicate /// exactly what type of operation is being performed. /// </summary> public enum UpdateEventType { /// <summary> /// A row is being deleted from the given database and table /// </summary> Delete = 9, /// <summary> /// A row is being inserted into the table. /// </summary> Insert = 18, /// <summary> /// A row is being updated in the table. /// </summary> Update = 23, } /// <summary> /// Passed during an Update callback, these event arguments detail the type of update operation being performed /// on the given connection. /// </summary> public class UpdateEventArgs : EventArgs { /// <summary> /// The name of the database being updated (usually "main" but can be any attached or temporary database) /// </summary> public readonly string Database; /// <summary> /// The name of the table being updated /// </summary> public readonly string Table; /// <summary> /// The type of update being performed (insert/update/delete) /// </summary> public readonly UpdateEventType Event; /// <summary> /// The RowId affected by this update. /// </summary> public readonly Int64 RowId; internal UpdateEventArgs(string database, string table, UpdateEventType eventType, Int64 rowid) { Database = database; Table = table; Event = eventType; RowId = rowid; } } /// <summary> /// Event arguments raised when a transaction is being committed /// </summary> public class CommitEventArgs : EventArgs { internal CommitEventArgs() { } /// <summary> /// Set to true to abort the transaction and trigger a rollback /// </summary> public bool AbortTransaction; } } |
Changes to System.Data.SQLite/SQLiteConvert.cs.
︙ | ︙ | |||
186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 | /// Converts a UTF-8 encoded IntPtr of the specified length into a .NET string /// </summary> /// <param name="nativestring">The pointer to the memory where the UTF-8 string is encoded</param> /// <param name="nativestringlen">The number of bytes to decode</param> /// <returns>A string containing the translated character(s)</returns> public virtual string ToString(IntPtr nativestring, int nativestringlen) { if (nativestringlen == 0) return ""; byte[] byteArray = new byte[nativestringlen]; Marshal.Copy(nativestring, byteArray, 0, nativestringlen); return _utf8.GetString(byteArray, 0, nativestringlen); } #endregion #region DateTime Conversion Functions /// <summary> /// Converts a string into a DateTime, using the current DateTimeFormat specified for the connection when it was opened. /// </summary> | > > > > > > > > > > > > | 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 | /// Converts a UTF-8 encoded IntPtr of the specified length into a .NET string /// </summary> /// <param name="nativestring">The pointer to the memory where the UTF-8 string is encoded</param> /// <param name="nativestringlen">The number of bytes to decode</param> /// <returns>A string containing the translated character(s)</returns> public virtual string ToString(IntPtr nativestring, int nativestringlen) { return UTF8ToString(nativestring, nativestringlen); } /// <summary> /// Converts a UTF-8 encoded IntPtr of the specified length into a .NET string /// </summary> /// <param name="nativestring">The pointer to the memory where the UTF-8 string is encoded</param> /// <param name="nativestringlen">The number of bytes to decode</param> /// <returns>A string containing the translated character(s)</returns> public virtual string UTF8ToString(IntPtr nativestring, int nativestringlen) { if (nativestringlen == 0) return ""; byte[] byteArray = new byte[nativestringlen]; Marshal.Copy(nativestring, byteArray, 0, nativestringlen); return _utf8.GetString(byteArray, 0, nativestringlen); } #endregion #region DateTime Conversion Functions /// <summary> /// Converts a string into a DateTime, using the current DateTimeFormat specified for the connection when it was opened. /// </summary> |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteDataReader.cs.
︙ | ︙ | |||
178 179 180 181 182 183 184 | /// </returns> /// <param name="i">The index of the column to type-check</param> /// <param name="typ">The type we want to get out of the column</param> private void VerifyType(int i, DbType typ) { CheckClosed(); CheckValidRow(); | < | < < | | 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 | /// </returns> /// <param name="i">The index of the column to type-check</param> /// <param name="typ">The type we want to get out of the column</param> private void VerifyType(int i, DbType typ) { CheckClosed(); CheckValidRow(); TypeAffinity affinity = _activeStatement._sql.ColumnAffinity(_activeStatement, i); switch (affinity) { case TypeAffinity.Int64: if (typ == DbType.Int16) return; if (typ == DbType.Int32) return; if (typ == DbType.Int64) return; if (typ == DbType.Boolean) return; if (typ == DbType.Byte) return; |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteException.cs.
︙ | ︙ | |||
231 232 233 234 235 236 237 | "SQLite error", "An internal logic error in SQLite", "Access permission denied", "Callback routine requested an abort", "The database file is locked", "A table in the database is locked", "malloc() failed", | | | 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 | "SQLite error", "An internal logic error in SQLite", "Access permission denied", "Callback routine requested an abort", "The database file is locked", "A table in the database is locked", "malloc() failed", "Attempt to write a read-only database", "Operation terminated by sqlite3_interrupt()", "Some kind of disk I/O error occurred", "The database disk image is malformed", "Table or record not found", "Insertion failed because the database is full", "Unable to open the database file", "Database lock protocol error", |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteTransaction.cs.
︙ | ︙ | |||
29 30 31 32 33 34 35 | internal SQLiteTransaction(SQLiteConnection connection, bool deferredLock) { _cnn = connection; if (_cnn._transactionLevel++ == 0) { try { | > > | | | > | > > | 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | internal SQLiteTransaction(SQLiteConnection connection, bool deferredLock) { _cnn = connection; if (_cnn._transactionLevel++ == 0) { try { using (SQLiteCommand cmd = _cnn.CreateCommand()) { if (!deferredLock) cmd.CommandText = "BEGIN IMMEDIATE"; else cmd.CommandText = "BEGIN"; cmd.ExecuteNonQuery(); } } catch (SQLiteException) { _cnn._transactionLevel--; _cnn = null; throw; } |
︙ | ︙ | |||
54 55 56 57 58 59 60 | { IsValid(); if (--_cnn._transactionLevel == 0) { try { | > > > | > | 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | { IsValid(); if (--_cnn._transactionLevel == 0) { try { using (SQLiteCommand cmd = _cnn.CreateCommand()) { cmd.CommandText = "COMMIT"; cmd.ExecuteNonQuery(); } } finally { _cnn = null; } } else |
︙ | ︙ | |||
111 112 113 114 115 116 117 | /// </summary> public override void Rollback() { IsValid(); try { | > > | > > | 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | /// </summary> public override void Rollback() { IsValid(); try { using (SQLiteCommand cmd = _cnn.CreateCommand()) { cmd.CommandText = "ROLLBACK"; cmd.ExecuteNonQuery(); } _cnn._transactionLevel = 0; } finally { _cnn = null; } } |
︙ | ︙ |
Changes to System.Data.SQLite/System.Data.SQLite.
︙ | ︙ | |||
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | <DefineConstants>TRACE;DEBUG;USE_INTEROP_DLL</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <DocumentationFile> </DocumentationFile> <GenerateSerializationAssemblies>off</GenerateSerializationAssemblies> <FileAlignment>512</FileAlignment> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugSymbols>false</DebugSymbols> <OutputPath>bin\</OutputPath> <DefineConstants> </DefineConstants> <DebugType>none</DebugType> <PlatformTarget>AnyCPU</PlatformTarget> <CodeAnalysisRuleAssemblies>C:\Program Files\Microsoft Visual Studio 8\Team Tools\Static Analysis Tools\FxCop\\rules</CodeAnalysisRuleAssemblies> <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression> <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile> <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies> <ErrorReport>prompt</ErrorReport> <FileAlignment>512</FileAlignment> <DocumentationFile>bin\System.Data.SQLite.XML</DocumentationFile> </PropertyGroup> <ItemGroup> <Reference Include="System" /> <Reference Include="System.Data" /> <Reference Include="System.Transactions" /> <Reference Include="System.Xml" /> </ItemGroup> | > > > | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | <DefineConstants>TRACE;DEBUG;USE_INTEROP_DLL</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <DocumentationFile> </DocumentationFile> <GenerateSerializationAssemblies>off</GenerateSerializationAssemblies> <FileAlignment>512</FileAlignment> <AllowUnsafeBlocks>true</AllowUnsafeBlocks> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugSymbols>false</DebugSymbols> <OutputPath>bin\</OutputPath> <DefineConstants> </DefineConstants> <DebugType>none</DebugType> <PlatformTarget>AnyCPU</PlatformTarget> <CodeAnalysisRuleAssemblies>C:\Program Files\Microsoft Visual Studio 8\Team Tools\Static Analysis Tools\FxCop\\rules</CodeAnalysisRuleAssemblies> <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression> <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile> <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies> <ErrorReport>prompt</ErrorReport> <FileAlignment>512</FileAlignment> <DocumentationFile>bin\System.Data.SQLite.XML</DocumentationFile> <AllowUnsafeBlocks>true</AllowUnsafeBlocks> <Optimize>true</Optimize> </PropertyGroup> <ItemGroup> <Reference Include="System" /> <Reference Include="System.Data" /> <Reference Include="System.Transactions" /> <Reference Include="System.Xml" /> </ItemGroup> |
︙ | ︙ |
Changes to System.Data.SQLite/UnsafeNativeMethods.cs.
︙ | ︙ | |||
53 54 55 56 57 58 59 | [DllImport(SQLITE_DLL)] internal static extern int sqlite3_changes_interop(IntPtr db); [DllImport(SQLITE_DLL)] internal static extern int sqlite3_busy_timeout_interop(IntPtr db, int ms); [DllImport(SQLITE_DLL)] | | | 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | [DllImport(SQLITE_DLL)] internal static extern int sqlite3_changes_interop(IntPtr db); [DllImport(SQLITE_DLL)] internal static extern int sqlite3_busy_timeout_interop(IntPtr db, int ms); [DllImport(SQLITE_DLL)] internal static extern int sqlite3_prepare_interop(IntPtr db, IntPtr pSql, int nBytes, out IntPtr stmt, out IntPtr ptrRemain, out int nRemain); [DllImport(SQLITE_DLL)] internal static extern int sqlite3_bind_blob_interop(IntPtr stmt, int index, Byte[] value, int nSize, IntPtr nTransient); [DllImport(SQLITE_DLL)] internal static extern int sqlite3_bind_double_interop(IntPtr stmt, int index, ref double value); |
︙ | ︙ | |||
209 210 211 212 213 214 215 | [DllImport(SQLITE_DLL, CharSet = CharSet.Unicode)] internal static extern int sqlite3_open16_interop(string utf16Filename, out IntPtr db); [DllImport(SQLITE_DLL)] internal static extern IntPtr sqlite3_errmsg16_interop(IntPtr db, out int len); [DllImport(SQLITE_DLL, CharSet = CharSet.Unicode)] | | | 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 | [DllImport(SQLITE_DLL, CharSet = CharSet.Unicode)] internal static extern int sqlite3_open16_interop(string utf16Filename, out IntPtr db); [DllImport(SQLITE_DLL)] internal static extern IntPtr sqlite3_errmsg16_interop(IntPtr db, out int len); [DllImport(SQLITE_DLL, CharSet = CharSet.Unicode)] internal static extern int sqlite3_prepare16_interop(IntPtr db, IntPtr pSql, int sqlLen, out IntPtr stmt, out IntPtr ptrRemain, out int len); [DllImport(SQLITE_DLL, CharSet = CharSet.Unicode)] internal static extern int sqlite3_bind_text16_interop(IntPtr stmt, int index, string value, int nlen, int nTransient); [DllImport(SQLITE_DLL)] internal static extern IntPtr sqlite3_column_name16_interop(IntPtr stmt, int index, out int len); |
︙ | ︙ | |||
255 256 257 258 259 260 261 | internal static extern int sqlite3_decompressfile(string fileName); [DllImport(SQLITE_DLL)] internal static extern int sqlite3_key_interop(IntPtr db, byte[] key, int keylen); [DllImport(SQLITE_DLL)] internal static extern int sqlite3_rekey_interop(IntPtr db, byte[] key, int keylen); | | > > | > > > > > > > | 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 | internal static extern int sqlite3_decompressfile(string fileName); [DllImport(SQLITE_DLL)] internal static extern int sqlite3_key_interop(IntPtr db, byte[] key, int keylen); [DllImport(SQLITE_DLL)] internal static extern int sqlite3_rekey_interop(IntPtr db, byte[] key, int keylen); [DllImport(SQLITE_DLL)] internal static extern IntPtr sqlite3_update_hook_interop(IntPtr db, SQLiteUpdateCallback func); [DllImport(SQLITE_DLL)] internal static extern IntPtr sqlite3_commit_hook_interop(IntPtr db, SQLiteCommitCallback func); [DllImport(SQLITE_DLL)] internal static extern IntPtr sqlite3_rollback_hook_interop(IntPtr db, SQLiteRollbackCallback func); } } |
Changes to readme.htm.
1 2 3 4 5 6 7 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> </head> <body> ADO.NET 2.0 SQLite Data Provider<br> | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> </head> <body> ADO.NET 2.0 SQLite Data Provider<br> Version 1.0.30.0 July 2, 2006<br> Using SQLite 3.3.6<br> Written by Robert Simpson (<a href="mailto:robert@blackcastlesoft.com">robert@blackcastlesoft.com</a>)<br> Released to the public domain, use at your own risk!<br> <br> The latest version can be downloaded <a href="http://sourceforge.net/projects/sqlite-dotnet2"> here</a> <br> <br> |
︙ | ︙ | |||
115 116 117 118 119 120 121 122 123 124 125 126 127 128 | The SQLite3 source code is compiled directly from the SQLite.org release sources. All builds of sqlite after 3.2.8 have included support for Windows CE. Additionally, just one minor modification is made to pager.c, that modification is made automatically by the fixsource.vbs file when the VS2005 solution is compiled.</p> <p></p> <p> <b>Version History</b></p> <p><b>1.0.29.0 - May 16, 2006</b></p> <ul> <li>Fixed a bug in the Views schema information which caused multi-line view definition statements not to be parsed</li> <li>Fixed a parsing bug in SQLiteDataReader.GetSchemaTable() to account for numeric(x,y) datatypes with specified precision and scale</li> <li>Fixed a bug in SQLiteConnection.Open() which tried to automatically enlist in an ambient transaction but had not yet set the state of the database to Opened, thereby causing a transaction fault</li> <li>Changed SQLiteException to inherit from DbException on the full framework</li> </ul> | > > > > > > > > > > > > > > > > | 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | The SQLite3 source code is compiled directly from the SQLite.org release sources. All builds of sqlite after 3.2.8 have included support for Windows CE. Additionally, just one minor modification is made to pager.c, that modification is made automatically by the fixsource.vbs file when the VS2005 solution is compiled.</p> <p></p> <p> <b>Version History</b></p> <p><b>1.0.30.0 - July 2, 2006</b></p> <ul> <li>Code merge with SQLite 3.3.6</li> <li>Added support for the |DataDirectory| keyword in the Data Source filename string. </li> <li>Added hook notification support to SQLiteConnection. Specifically, there are three new events on the SQLiteConnection object which are raised when an update/insert/delete occurs and when transactions are committed and rolled back.</li><li>Changed SQLiteTransaction to default to BEGIN IMMEDIATE instead of just BEGIN, which solves a multithreaded race condition. </li> <li>Changed SQLiteDataReader to better support SQLite's typelessness. The data reader no longer caches column affinity, but re-evaluates it for each column/row.</li> <li>Fixed a bug in Prepare() which caused an intermittant fault due to the code accessing the memory of an unpinned variable. </li> <li>Fixed a multithreaded lock-retry bug in in SQLiteConnection.Open() and in SQLiteTransaction, which failed to use a command timeout before giving up.</li> </ul> <p><b>1.0.29.0 - May 16, 2006</b></p> <ul> <li>Fixed a bug in the Views schema information which caused multi-line view definition statements not to be parsed</li> <li>Fixed a parsing bug in SQLiteDataReader.GetSchemaTable() to account for numeric(x,y) datatypes with specified precision and scale</li> <li>Fixed a bug in SQLiteConnection.Open() which tried to automatically enlist in an ambient transaction but had not yet set the state of the database to Opened, thereby causing a transaction fault</li> <li>Changed SQLiteException to inherit from DbException on the full framework</li> </ul> |
︙ | ︙ |