Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | 1.08 Refresh, added documentation |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | sourceforge |
Files: | files | file ages | folders |
SHA1: |
b56fd4b082225ffb1674ddf95aa78105 |
User & Date: | rmsimpson 2005-03-24 19:37:41.000 |
Context
2005-03-24
| ||
19:38 | 1.08 Refresh, added documentation, bug fixes check-in: edb2e2df3f user: rmsimpson tags: sourceforge | |
19:37 | 1.08 Refresh, added documentation check-in: b56fd4b082 user: rmsimpson tags: sourceforge | |
19:36 | 1.08 Refresh check-in: 3299a17a57 user: rmsimpson tags: sourceforge | |
Changes
Changes to System.Data.SQLite/SQLiteBase.cs.
︙ | ︙ | |||
131 132 133 134 135 136 137 138 139 140 141 142 143 144 | internal abstract Int64 GetInt64(SQLiteStatement stmt, int index); internal abstract string GetText(SQLiteStatement stmt, int index); internal abstract long GetBytes(SQLiteStatement stmt, int index, int nDataoffset, byte[] bDest, int nStart, int nLength); internal abstract long GetChars(SQLiteStatement stmt, int index, int nDataoffset, char[] bDest, int nStart, int nLength); internal abstract DateTime GetDateTime(SQLiteStatement stmt, int index); internal abstract bool IsNull(SQLiteStatement stmt, int index); internal virtual object GetValue(SQLiteStatement stmt, int index, ref SQLiteType typ) { if (typ.Affinity == 0) typ = SQLiteConvert.ColumnToType(stmt, index); if (IsNull(stmt, index)) return DBNull.Value; Type t = SQLiteConvert.SQLiteTypeToType(typ); | > > > > > > > | 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 | internal abstract Int64 GetInt64(SQLiteStatement stmt, int index); internal abstract string GetText(SQLiteStatement stmt, int index); internal abstract long GetBytes(SQLiteStatement stmt, int index, int nDataoffset, byte[] bDest, int nStart, int nLength); internal abstract long GetChars(SQLiteStatement stmt, int index, int nDataoffset, char[] bDest, int nStart, int nLength); internal abstract DateTime GetDateTime(SQLiteStatement stmt, int index); internal abstract bool IsNull(SQLiteStatement stmt, int index); /// <summary> /// Helper function to retrieve a column of data from an active statement. /// </summary> /// <param name="stmt">The statement being step()'d through</param> /// <param name="index">The column index to retrieve</param> /// <param name="typ">The type of data contained in the column. If Uninitialized, this function will retrieve the datatype information.</param> /// <returns>Returns the data in the column</returns> internal virtual object GetValue(SQLiteStatement stmt, int index, ref SQLiteType typ) { if (typ.Affinity == 0) typ = SQLiteConvert.ColumnToType(stmt, index); if (IsNull(stmt, index)) return DBNull.Value; Type t = SQLiteConvert.SQLiteTypeToType(typ); |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteCommand.cs.
︙ | ︙ | |||
13 14 15 16 17 18 19 20 21 22 23 24 25 26 | using System.Collections.Generic; /// <summary> /// SQLite implementation of DbCommand. /// </summary> public sealed class SQLiteCommand : DbCommand { private string _commandText; private SQLiteConnection _cnn; private bool _isReaderOpen; private int _commandTimeout; private bool _designTimeVisible; private UpdateRowSource _updateRowSource; private SQLiteParameterCollection _parameterCollection; | > > > > > > > > > > > > > > > > > > > > > | > > | 13 14 15 16 17 18 19 20 21 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 54 55 56 57 | using System.Collections.Generic; /// <summary> /// SQLite implementation of DbCommand. /// </summary> public sealed class SQLiteCommand : DbCommand { /// <summary> /// The command text this command is based on /// </summary> private string _commandText; /// <summary> /// The connection the command is associated with /// </summary> private SQLiteConnection _cnn; /// <summary> /// Indicates whether or not a DataReader is active on the command. /// </summary> private bool _isReaderOpen; /// <summary> /// The timeout for the command, kludged because SQLite doesn't support per-command timeout values /// </summary> private int _commandTimeout; /// <summary> /// Designer support /// </summary> private bool _designTimeVisible; /// <summary> /// Used by DbDataAdapter to determine updating behavior /// </summary> private UpdateRowSource _updateRowSource; /// <summary> /// The collection of parameters for the command /// </summary> private SQLiteParameterCollection _parameterCollection; /// <summary> /// The SQL command text, broken into individual SQL statements /// </summary> internal SQLiteStatement[] _statementList; ///<overloads> /// Constructs a new SQLiteCommand /// </overloads> /// <summary> /// Default constructor |
︙ | ︙ | |||
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | /// </summary> /// <param name="cnn"></param> public SQLiteCommand(SQLiteConnection cnn) { Initialize(null, cnn); } private void Initialize(string strSql, SQLiteConnection cnn) { _statementList = null; _isReaderOpen = false; _commandTimeout = 30; _parameterCollection = new SQLiteParameterCollection(this); _designTimeVisible = true; _updateRowSource = UpdateRowSource.FirstReturnedRecord; if (strSql != null) CommandText = strSql; if (cnn != null) DbConnection = cnn; } /// <summary> | > > > > > | | > > > > > > | 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 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 | /// </summary> /// <param name="cnn"></param> public SQLiteCommand(SQLiteConnection cnn) { Initialize(null, cnn); } /// <summary> /// Initializes the command class /// </summary> /// <param name="strSql">The SQL command text</param> /// <param name="cnn">A connection to associate with the command</param> private void Initialize(string strSql, SQLiteConnection cnn) { _statementList = null; _isReaderOpen = false; _commandTimeout = 30; _parameterCollection = new SQLiteParameterCollection(this); _designTimeVisible = true; _updateRowSource = UpdateRowSource.FirstReturnedRecord; if (strSql != null) CommandText = strSql; if (cnn != null) DbConnection = cnn; } /// <summary> /// Disposes of the command and clears all member variables /// </summary> /// <param name="disposing">Whether or not the class is being explicitly or implicitly disposed</param> protected override void Dispose(bool disposing) { base.Dispose(disposing); ClearCommands(); _parameterCollection.Clear(); _cnn = null; _commandText = null; } /// <summary> /// Clears and destroys all statements currently prepared /// </summary> internal void ClearCommands() { if (_statementList == null) return; int x = _statementList.Length; for (int n = 0; n < x; n++) _statementList[n].Dispose(); _statementList = null; _parameterCollection.Unbind(); } /// <summary> /// Builds an array of prepared statements for each complete SQL statement in the command text /// </summary> internal void BuildCommands() { ClearCommands(); if (_cnn.State != ConnectionState.Open) return; string strRemain = _commandText; |
︙ | ︙ | |||
272 273 274 275 276 277 278 279 280 281 282 283 284 285 | if (value != _cnn._activeTransaction && value != null) { throw new ArgumentOutOfRangeException(); } } } private void InitializeForReader() { if (_isReaderOpen) throw new InvalidOperationException("DataReader already active on this command"); if (_cnn == null) throw new InvalidOperationException("No connection associated with this Command"); | > > > > > | 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 | if (value != _cnn._activeTransaction && value != null) { throw new ArgumentOutOfRangeException(); } } } /// <summary> /// This function ensures there are no active readers, that we have a valid connection, /// that the connection is open, that all statements are prepared and all parameters are assigned /// in preparation for allocating a data reader. /// </summary> private void InitializeForReader() { if (_isReaderOpen) throw new InvalidOperationException("DataReader already active on this command"); if (_cnn == null) throw new InvalidOperationException("No connection associated with this Command"); |
︙ | ︙ | |||
301 302 303 304 305 306 307 | x = _statementList.Length; // Bind all parameters to their statements for (n = 0; n < x; n++) _statementList[n].BindParameters(); } /// <summary> | | | | > > > | 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 | x = _statementList.Length; // Bind all parameters to their statements for (n = 0; n < x; n++) _statementList[n].BindParameters(); } /// <summary> /// Creates a new SQLiteDataReader to execute/iterate the array of SQLite prepared statements /// </summary> /// <param name="behavior">The behavior the data reader should adopt</param> /// <returns>Returns a SQLiteDataReader object</returns> protected override DbDataReader ExecuteDbDataReader(CommandBehavior behavior) { InitializeForReader(); _cnn._sql.SetTimeout(_commandTimeout * 1000); try { SQLiteDataReader rd = new SQLiteDataReader(this, behavior); _isReaderOpen = true; return rd; } finally { } } /// <summary> /// Called by the SQLiteDataReader when the data reader is closed. /// </summary> internal void ClearDataReader() { _isReaderOpen = false; } /// <summary> /// Execute the command and return the number of rows inserted/updated affected by it. |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteConnection.cs.
︙ | ︙ | |||
166 167 168 169 170 171 172 173 174 175 176 177 178 179 | } } } } } #if PLATFORM_COMPACTFRAMEWORK && !BETA1 public override int ConnectionTimeout { get { return 30; } } | > > > | 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 | } } } } } #if PLATFORM_COMPACTFRAMEWORK && !BETA1 /// <summary> /// Obsolete /// </summary> public override int ConnectionTimeout { get { return 30; } } |
︙ | ︙ | |||
207 208 209 210 211 212 213 214 215 216 217 218 219 220 | /// <param name="bDisposing">True if the connection is being explicitly closed.</param> protected override void Dispose(bool bDisposing) { base.Dispose(bDisposing); Close(); } internal void OnStateChange(ConnectionState newState) { ConnectionState oldState = _connectionState; _connectionState = newState; #if !PLATFORM_COMPACTFRAMEWORK && !BETA1 if (StateChange != null && oldState != newState) | > > > > | 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 | /// <param name="bDisposing">True if the connection is being explicitly closed.</param> protected override void Dispose(bool bDisposing) { base.Dispose(bDisposing); Close(); } /// <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; _connectionState = newState; #if !PLATFORM_COMPACTFRAMEWORK && !BETA1 if (StateChange != null && oldState != newState) |
︙ | ︙ | |||
568 569 570 571 572 573 574 575 576 577 578 579 580 581 | return Schema_Views(parms[0], parms[2]); case "CATALOGS": return Schema_Catalogs(parms[0]); } return null; } private DataTable Schema_MetaDataCollections() { DataTable tbl = new DataTable("MetaDataCollections"); DataRow row; tbl.Columns.Add("CollectionName", typeof(string)); tbl.Columns.Add("NumberOfRestrictions", typeof(int)); | > > > > | 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 | return Schema_Views(parms[0], parms[2]); case "CATALOGS": return Schema_Catalogs(parms[0]); } return null; } /// <summary> /// Builds a MetaDataCollections schema datatable /// </summary> /// <returns>DataTable</returns> private DataTable Schema_MetaDataCollections() { DataTable tbl = new DataTable("MetaDataCollections"); DataRow row; tbl.Columns.Add("CollectionName", typeof(string)); tbl.Columns.Add("NumberOfRestrictions", typeof(int)); |
︙ | ︙ | |||
613 614 615 616 617 618 619 620 621 622 623 624 625 626 | tbl.AcceptChanges(); tbl.EndLoadData(); return tbl; } private DataTable Schema_DataSourceInformation() { DataTable tbl = new DataTable("DataSourceInformation"); DataRow row; tbl.Columns.Add("CompositeIdentifierSeparatorPattern", typeof(string)); tbl.Columns.Add("DataSourceProductName", typeof(string)); | > > > > | 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 | tbl.AcceptChanges(); tbl.EndLoadData(); return tbl; } /// <summary> /// Builds a DataSourceInformation datatable /// </summary> /// <returns>DataTable</returns> private DataTable Schema_DataSourceInformation() { DataTable tbl = new DataTable("DataSourceInformation"); DataRow row; tbl.Columns.Add("CompositeIdentifierSeparatorPattern", typeof(string)); tbl.Columns.Add("DataSourceProductName", typeof(string)); |
︙ | ︙ | |||
668 669 670 671 672 673 674 675 676 677 678 679 680 681 | tbl.AcceptChanges(); tbl.EndLoadData(); return tbl; } private DataTable Schema_Columns(string strCatalog, string strTable, string strColumn) { DataTable tbl = new DataTable("Columns"); DataRow row; tbl.Columns.Add("TABLE_CATALOG", typeof(string)); tbl.Columns.Add("TABLE_SCHEMA", typeof(string)); | > > > > > > > | 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 | tbl.AcceptChanges(); tbl.EndLoadData(); return tbl; } /// <summary> /// Build a Columns schema /// </summary> /// <param name="strCatalog">The catalog (attached database) to query, can be null</param> /// <param name="strTable">The table to retrieve schema information for, must not be null</param> /// <param name="strColumn">The column to retrieve schema information for, can be null</param> /// <returns>DataTable</returns> private DataTable Schema_Columns(string strCatalog, string strTable, string strColumn) { DataTable tbl = new DataTable("Columns"); DataRow row; tbl.Columns.Add("TABLE_CATALOG", typeof(string)); tbl.Columns.Add("TABLE_SCHEMA", typeof(string)); |
︙ | ︙ | |||
740 741 742 743 744 745 746 747 748 749 750 751 752 753 | tbl.AcceptChanges(); tbl.EndLoadData(); return tbl; } private DataTable Schema_Indexes(string strCatalog, string strIndex, string strTable) { DataTable tbl = new DataTable("Indexes"); DataRow row; tbl.Columns.Add("TABLE_CATALOG", typeof(string)); tbl.Columns.Add("TABLE_SCHEMA", typeof(string)); | > > > > > > > | 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 | tbl.AcceptChanges(); tbl.EndLoadData(); return tbl; } /// <summary> /// Returns index information for the given database and catalog /// </summary> /// <param name="strCatalog">The catalog (attached database) to query, can be null</param> /// <param name="strIndex">The name of the index to retrieve information for, can be null</param> /// <param name="strTable">The table to retrieve index information for, can be null</param> /// <returns>DataTable</returns> private DataTable Schema_Indexes(string strCatalog, string strIndex, string strTable) { DataTable tbl = new DataTable("Indexes"); DataRow row; tbl.Columns.Add("TABLE_CATALOG", typeof(string)); tbl.Columns.Add("TABLE_SCHEMA", typeof(string)); |
︙ | ︙ | |||
803 804 805 806 807 808 809 810 811 812 813 814 815 816 | tbl.AcceptChanges(); tbl.EndLoadData(); return tbl; } private DataTable Schema_Tables(string strCatalog, string strTable, string strType) { DataTable tbl = new DataTable("Tables"); DataRow row; string strItem; tbl.Columns.Add("TABLE_CATALOG", typeof(string)); | > > > > > > > | 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 | tbl.AcceptChanges(); tbl.EndLoadData(); return tbl; } /// <summary> /// Retrieves table schema information for the database and catalog /// </summary> /// <param name="strCatalog">The catalog (attached database) to retrieve tables on</param> /// <param name="strTable">The table to retrieve, can be null</param> /// <param name="strType">The table type, can be null</param> /// <returns>DataTable</returns> private DataTable Schema_Tables(string strCatalog, string strTable, string strType) { DataTable tbl = new DataTable("Tables"); DataRow row; string strItem; tbl.Columns.Add("TABLE_CATALOG", typeof(string)); |
︙ | ︙ | |||
855 856 857 858 859 860 861 862 863 864 865 866 867 868 | tbl.AcceptChanges(); tbl.EndLoadData(); return tbl; } private DataTable Schema_Views(string strCatalog, string strView) { DataTable tbl = new DataTable("Views"); DataRow row; string strItem; int nPos; | > > > > > > | 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 | tbl.AcceptChanges(); tbl.EndLoadData(); return tbl; } /// <summary> /// Retrieves view schema information for the database /// </summary> /// <param name="strCatalog">The catalog (attached database) to retrieve views on</param> /// <param name="strView">The view name, can be null</param> /// <returns>DataTable</returns> private DataTable Schema_Views(string strCatalog, string strView) { DataTable tbl = new DataTable("Views"); DataRow row; string strItem; int nPos; |
︙ | ︙ | |||
908 909 910 911 912 913 914 915 916 917 918 919 920 921 | tbl.AcceptChanges(); tbl.EndLoadData(); return tbl; } private DataTable Schema_Catalogs(string strCatalog) { DataTable tbl = new DataTable("Catalogs"); DataRow row; tbl.Columns.Add("CATALOG_NAME", typeof(string)); tbl.Columns.Add("DESCRIPTION", typeof(string)); | > > > > > | 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 | tbl.AcceptChanges(); tbl.EndLoadData(); return tbl; } /// <summary> /// Retrieves catalog (attached databases) schema information for the database /// </summary> /// <param name="strCatalog">The catalog to retrieve, can be null</param> /// <returns>DataTable</returns> private DataTable Schema_Catalogs(string strCatalog) { DataTable tbl = new DataTable("Catalogs"); DataRow row; tbl.Columns.Add("CATALOG_NAME", typeof(string)); tbl.Columns.Add("DESCRIPTION", typeof(string)); |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteConnectionStringBuilder.cs.
︙ | ︙ | |||
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | /// </summary> /// <param name="cnnString">The connection string to parse</param> public SQLiteConnectionStringBuilder(string cnnString) { Initialize(cnnString); } private void Initialize(string cnnString) { ConnectionString = cnnString; Reset(); } internal void Reset() { if (this.ContainsKey("Version") == false) Version = 3; if (ContainsKey("UseUTF16Encoding") == false) UseUTF16Encoding = false; | > > > > > > > | 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | /// </summary> /// <param name="cnnString">The connection string to parse</param> public SQLiteConnectionStringBuilder(string cnnString) { Initialize(cnnString); } /// <summary> /// Private initializer, which assigns the connection string and resets the builder /// </summary> /// <param name="cnnString">The connection string to assign</param> private void Initialize(string cnnString) { ConnectionString = cnnString; Reset(); } /// <summary> /// Resets the builder to the default settings /// </summary> internal void Reset() { if (this.ContainsKey("Version") == false) Version = 3; if (ContainsKey("UseUTF16Encoding") == false) UseUTF16Encoding = false; |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteConvert.cs.
︙ | ︙ | |||
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | /// <summary> /// The default format for this provider. More compatible with SQLite's intended usage of datetimes, but overall less accurate than Ticks as it doesn't /// natively support times down to fractions of a second. /// </summary> ISO8601 = 1, } internal struct SQLiteType { internal DbType Type; internal TypeAffinity Affinity; } /// <summary> /// This base class provides datatype conversion services for the SQLite provider. /// </summary> public abstract class SQLiteConvert { /// <summary> /// An array of ISO8601 datetime formats we support conversion from /// </summary> private static string[] _datetimeFormats; /// <summary> /// An UTF-8 Encoding instance, so we can convert strings to and from UTF8 /// </summary> | > > > > > > > > > | | 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 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 | /// <summary> /// The default format for this provider. More compatible with SQLite's intended usage of datetimes, but overall less accurate than Ticks as it doesn't /// natively support times down to fractions of a second. /// </summary> ISO8601 = 1, } /// <summary> /// Struct used internally to determine the datatype of a column in a resultset /// </summary> internal struct SQLiteType { /// <summary> /// The DbType of the column, or DbType.Object if it cannot be determined /// </summary> internal DbType Type; /// <summary> /// The affinity of a column, used for expressions or when Type is DbType.Object /// </summary> internal TypeAffinity Affinity; } /// <summary> /// This base class provides datatype conversion services for the SQLite provider. /// </summary> public abstract class SQLiteConvert { /// <summary> /// An array of ISO8601 datetime formats we support conversion from /// </summary> private static string[] _datetimeFormats; /// <summary> /// An UTF-8 Encoding instance, so we can convert strings to and from UTF8 /// </summary> private static Text.UTF8Encoding _utf8 = new Text.UTF8Encoding(); /// <summary> /// The default DateTime format for this instance /// </summary> private DateTimeFormat _datetimeFormat; /// <summary> /// Static constructor, initializes the supported ISO8601 date time formats |
︙ | ︙ | |||
103 104 105 106 107 108 109 110 111 112 | "yy-MM-dd", "yyyyMMdd", "HH:mm:ss", "THHmmss" }; } internal SQLiteConvert(DateTimeFormat fmt) { _datetimeFormat = fmt; | > > > > < | 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | "yy-MM-dd", "yyyyMMdd", "HH:mm:ss", "THHmmss" }; } /// <summary> /// Initializes the conversion class /// </summary> /// <param name="fmt">The default date/time format to use for this instance</param> internal SQLiteConvert(DateTimeFormat fmt) { _datetimeFormat = fmt; } #region UTF-8 Conversion Functions /// <summary> /// Converts a string to a UTF-8 encoded byte array sized to include a null-terminating character. /// </summary> /// <param name="strSrc">The string to convert to UTF-8</param> |
︙ | ︙ | |||
313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 | string[] ar = new string[ls.Count]; ls.CopyTo(ar, 0); return ar; } #region Type Conversions internal static SQLiteType ColumnToType(SQLiteStatement stmt, int ordinal) { SQLiteType typ; typ.Type = TypeNameToDbType(stmt._sql.ColumnType(stmt, ordinal, out typ.Affinity)); return typ; } internal static Type SQLiteTypeToType(SQLiteType t) { if (t.Type != DbType.Object) return SQLiteConvert.DbTypeToType(t.Type); switch (t.Affinity) { | > > > > > > > > > > > | 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 | string[] ar = new string[ls.Count]; ls.CopyTo(ar, 0); return ar; } #region Type Conversions /// <summary> /// Determines the data type of a column in a statement /// </summary> /// <param name="stmt">The statement to retrieve information for</param> /// <param name="ordinal">The column to retrieve type information on</param> /// <returns>Returns a SQLiteType struct</returns> internal static SQLiteType ColumnToType(SQLiteStatement stmt, int ordinal) { SQLiteType typ; typ.Type = TypeNameToDbType(stmt._sql.ColumnType(stmt, ordinal, out typ.Affinity)); return typ; } /// <summary> /// Converts a SQLiteType to a .NET Type object /// </summary> /// <param name="t">The SQLiteType to convert</param> /// <returns>Returns a .NET Type object</returns> internal static Type SQLiteTypeToType(SQLiteType t) { if (t.Type != DbType.Object) return SQLiteConvert.DbTypeToType(t.Type); switch (t.Affinity) { |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteException.cs.
︙ | ︙ | |||
22 23 24 25 26 27 28 29 30 31 32 33 34 35 | } internal SQLiteException(int nCode, string strMessage) : base(Initialize(nCode, strMessage)) { HResult = (int)((uint)0x800F0000 | (uint)nCode); } private static string Initialize(int nCode, string strMessage) { if (strMessage != null) { if (strMessage.Length > 0) strMessage = "\r\n\r\n" + strMessage; } | > > > > > > > > > | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | } internal SQLiteException(int nCode, string strMessage) : base(Initialize(nCode, strMessage)) { HResult = (int)((uint)0x800F0000 | (uint)nCode); } /// <summary> /// Initializes the exception class with the SQLite error code. /// </summary> /// <param name="nCode">The SQLite error code</param> /// <param name="strMessage">A detailed error message</param> /// <returns>An error message string</returns> /// <remarks> /// The SQLite error code is OR'd with 0x800F0000 to generate an HResult /// </remarks> private static string Initialize(int nCode, string strMessage) { if (strMessage != null) { if (strMessage.Length > 0) strMessage = "\r\n\r\n" + strMessage; } |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteFunction.cs.
︙ | ︙ | |||
66 67 68 69 70 71 72 | /// information in member variables of user-defined function classes. /// /// For aggregate functions, always create and store your per-statement data in the contextData object on the 1st step. This data will /// be automatically freed for you (and Dispose() called if the item supports IDisposable) when the statement completes. /// </remarks> public abstract class SQLiteFunction : IDisposable { | | > > > > > > > > > > > > > > > > > > > > | 66 67 68 69 70 71 72 73 74 75 76 77 78 79 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 108 109 110 111 | /// information in member variables of user-defined function classes. /// /// For aggregate functions, always create and store your per-statement data in the contextData object on the 1st step. This data will /// be automatically freed for you (and Dispose() called if the item supports IDisposable) when the statement completes. /// </remarks> public abstract class SQLiteFunction : IDisposable { /// <summary> /// The base connection this function is attached to /// </summary> private SQLiteBase _base; /// <summary> /// Used internally to keep track of memory allocated for aggregate functions /// </summary> private int _interopCookie; /// <summary> /// Internal array used to keep track of aggregate function context data /// </summary> #if !PLATFORM_COMPACTFRAMEWORK && !BETA1 private SortedList<int, object> _contextDataList; #else private SortedList _contextDataList; #endif /// <summary> /// Holds a reference to the callback function for user functions /// </summary> private SQLiteCallback _InvokeFunc; /// <summary> /// Holds a reference to the callbakc function for stepping in an aggregate function /// </summary> private SQLiteCallback _StepFunc; /// <summary> /// Holds a reference to the callback function for finalizing an aggregate function /// </summary> private SQLiteCallback _FinalFunc; /// <summary> /// Holds a reference to the callback function for collation sequences /// </summary> private SQLiteCollation _CompareFunc; /// <summary> /// This static list contains all the user-defined functions declared using the proper attributes. /// </summary> private static List<SQLiteFunctionAttribute> _registeredFunctions = new List<SQLiteFunctionAttribute>(); |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteParameter.cs.
︙ | ︙ | |||
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | using System.Data.Common; /// <summary> /// SQLite implementation of DbParameter. /// </summary> public sealed class SQLiteParameter : DbParameter { private int _dbType; private DataRowVersion _rowVersion; private Object _objValue; private string _sourceColumn; private string _columnName; private int _dataSize; /// <summary> | > > > > > > > > > > > > > > > > > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 12 13 14 15 16 17 18 19 20 21 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 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 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 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 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 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 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 | using System.Data.Common; /// <summary> /// SQLite implementation of DbParameter. /// </summary> public sealed class SQLiteParameter : DbParameter { /// <summary> /// The data type of the parameter /// </summary> private int _dbType; /// <summary> /// The version information for mapping the parameter /// </summary> private DataRowVersion _rowVersion; /// <summary> /// The value of the data in the parameter /// </summary> private Object _objValue; /// <summary> /// The source column for the parameter /// </summary> private string _sourceColumn; /// <summary> /// The column name /// </summary> private string _columnName; /// <summary> /// The data size, unused by SQLite /// </summary> private int _dataSize; /// <summary> /// Default constructor /// </summary> public SQLiteParameter() { Initialize(null, -1, 0, null, DataRowVersion.Current); } /// <summary> /// Constructs a named parameter given the specified parameter name /// </summary> /// <param name="parameterName">The parameter name</param> public SQLiteParameter(string parameterName) { Initialize(parameterName, -1, 0, null, DataRowVersion.Current); } /// <summary> /// Constructs a named parameter of the specified type /// </summary> /// <param name="parameterName">The parameter name</param> /// <param name="dbType">The datatype of the parameter</param> public SQLiteParameter(string parameterName, DbType dbType) { Initialize(parameterName, (int)dbType, 0, null, DataRowVersion.Current); } /// <summary> /// Constructs a named parameter of the specified type and source column reference /// </summary> /// <param name="parameterName">The parameter name</param> /// <param name="dbType">The data type</param> /// <param name="sourceColumn">The source column</param> public SQLiteParameter(string parameterName, DbType dbType, string sourceColumn) { Initialize(parameterName, (int)dbType, 0, sourceColumn, DataRowVersion.Current); } /// <summary> /// Constructs a named parameter of the specified type, source column and row version /// </summary> /// <param name="parameterName">The parameter name</param> /// <param name="dbType">The data type</param> /// <param name="sourceColumn">The source column</param> /// <param name="rowVersion">The row version information</param> public SQLiteParameter(string parameterName, DbType dbType, string sourceColumn, DataRowVersion rowVersion) { Initialize(parameterName, (int)dbType, 0, sourceColumn, rowVersion); } /// <summary> /// Constructs an unnamed parameter of the specified data type /// </summary> /// <param name="dbType">The datatype of the parameter</param> public SQLiteParameter(DbType dbType) { Initialize(null, (int)dbType, 0, null, DataRowVersion.Current); } /// <summary> /// Constructs an unnamed parameter of the specified data type and source column /// </summary> /// <param name="dbType">The datatype of the parameter</param> /// <param name="sourceColumn">The source column</param> public SQLiteParameter(DbType dbType, string sourceColumn) { Initialize(null, (int)dbType, 0, sourceColumn, DataRowVersion.Current); } /// <summary> /// Constructs an unnamed parameter of the specified data type, source column and row version /// </summary> /// <param name="dbType">The data type</param> /// <param name="sourceColumn">The source column</param> /// <param name="rowVersion">The row version information</param> public SQLiteParameter(DbType dbType, string sourceColumn, DataRowVersion rowVersion) { Initialize(null, (int)dbType, 0, sourceColumn, rowVersion); } /// <summary> /// Constructs a named parameter of the specified type and size /// </summary> /// <param name="parameterName">The parameter name</param> /// <param name="dbType">The data type</param> /// <param name="nSize">The size of the parameter</param> public SQLiteParameter(string parameterName, DbType dbType, int nSize) { Initialize(parameterName, (int)dbType, nSize, null, DataRowVersion.Current); } /// <summary> /// Constructs a named parameter of the specified type, size and source column /// </summary> /// <param name="parameterName">The name of the parameter</param> /// <param name="dbType">The data type</param> /// <param name="nSize">The size of the parameter</param> /// <param name="sourceColumn">The source column</param> public SQLiteParameter(string parameterName, DbType dbType, int nSize, string sourceColumn) { Initialize(parameterName, (int)dbType, nSize, sourceColumn, DataRowVersion.Current); } /// <summary> /// Constructs a named parameter of the specified type, size, source column and row version /// </summary> /// <param name="parameterName">The name of the parameter</param> /// <param name="dbType">The data type</param> /// <param name="nSize">The size of the parameter</param> /// <param name="sourceColumn">The source column</param> /// <param name="rowVersion">The row version information</param> public SQLiteParameter(string parameterName, DbType dbType, int nSize, string sourceColumn, DataRowVersion rowVersion) { Initialize(parameterName, (int)dbType, nSize, sourceColumn, rowVersion); } /// <summary> /// Constructs an unnamed parameter of the specified type and size /// </summary> /// <param name="dbType">The data type</param> /// <param name="nSize">The size of the parameter</param> public SQLiteParameter(DbType dbType, int nSize) { Initialize(null, (int)dbType, nSize, null, DataRowVersion.Current); } /// <summary> /// Constructs an unnamed parameter of the specified type, size, and source column /// </summary> /// <param name="dbType">The data type</param> /// <param name="nSize">The size of the parameter</param> /// <param name="sourceColumn">The source column</param> public SQLiteParameter(DbType dbType, int nSize, string sourceColumn) { Initialize(null, (int)dbType, nSize, sourceColumn, DataRowVersion.Current); } /// <summary> /// Constructs an unnamed parameter of the specified type, size, source column and row version /// </summary> /// <param name="dbType">The data type</param> /// <param name="nSize">The size of the parameter</param> /// <param name="sourceColumn">The source column</param> /// <param name="rowVersion">The row version information</param> public SQLiteParameter(DbType dbType, int nSize, string sourceColumn, DataRowVersion rowVersion) { Initialize(null, (int)dbType, nSize, sourceColumn, rowVersion); } /// <summary> /// Initializes the parameter member variables /// </summary> /// <param name="parameterName">The parameter name</param> /// <param name="dbType">The data type</param> /// <param name="nSize">The size</param> /// <param name="sourceColumn">The source column</param> /// <param name="rowVersion">The row version</param> private void Initialize(string parameterName, int dbType, int nSize, string sourceColumn, DataRowVersion rowVersion) { _columnName = parameterName; _dbType = dbType; _sourceColumn = sourceColumn; _rowVersion = rowVersion; _objValue = null; _dataSize = nSize; } /// <summary> /// Returns True. /// </summary> public override bool IsNullable { get { return true; } set { } } /// <summary> /// Not implemented /// </summary> /// <param name="destination"></param> [Obsolete] public override void CopyTo(DbParameter destination) { throw new NotImplementedException(); } /// <summary> /// Returns the datatype of the parameter /// </summary> public override DbType DbType { get { if (_dbType == -1) return DbType.String; // Unassigned default value is String return (DbType)_dbType; } set { _dbType = (int)value; } } /// <summary> /// Supports only input parameters /// </summary> public override ParameterDirection Direction { get { return ParameterDirection.Input; } set { if (value != ParameterDirection.Input) throw new NotImplementedException(); } } /// <summary> /// Not implemented /// </summary> public override int Offset { get { throw new NotImplementedException(); } set { } } /// <summary> /// Returns the parameter name /// </summary> public override string ParameterName { get { return _columnName; } set { _columnName = value; } } /// <summary> /// Not implemented /// </summary> public override void ResetDbType() { throw new NotImplementedException(); } /// <summary> /// Returns the size of the parameter /// </summary> public override int Size { get { return _dataSize; } set { _dataSize = value; } } /// <summary> /// Gets/sets the source column /// </summary> public override string SourceColumn { get { return _sourceColumn; } set { _sourceColumn = value; } } /// <summary> /// Returns false, ignores any set value /// </summary> public override bool SourceColumnNullMapping { get { return false; } set { } } /// <summary> /// Gets and sets the row version /// </summary> public override DataRowVersion SourceVersion { get { return _rowVersion; } set { _rowVersion = value; } } /// <summary> /// Gets and sets the parameter value. If no datatype was specified, the datatype will assume the type from the value given. /// </summary> public override object Value { get { return _objValue; } |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteParameterCollection.cs.
︙ | ︙ | |||
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | using System.Collections.Generic; /// <summary> /// SQLite implementation of DbParameterCollection. /// </summary> public sealed class SQLiteParameterCollection : DbParameterCollection { private SQLiteCommand _command; private List<SQLiteParameter> _parameterList; private bool _unboundFlag; internal SQLiteParameterCollection(SQLiteCommand cmd) { _command = cmd; _parameterList = new List<SQLiteParameter>(); _unboundFlag = true; } /// <summary> | > > > > > > > > > > > > > | | | | | | | | | | | | | | | | | | | | | | | | | 13 14 15 16 17 18 19 20 21 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 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 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 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 | using System.Collections.Generic; /// <summary> /// SQLite implementation of DbParameterCollection. /// </summary> public sealed class SQLiteParameterCollection : DbParameterCollection { /// <summary> /// The underlying command to which this collection belongs /// </summary> private SQLiteCommand _command; /// <summary> /// The internal array of parameters in this collection /// </summary> private List<SQLiteParameter> _parameterList; /// <summary> /// Determines whether or not all parameters have been bound to their statement(s) /// </summary> private bool _unboundFlag; /// <summary> /// Initializes the collection /// </summary> /// <param name="cmd">The command to which the collection belongs</param> internal SQLiteParameterCollection(SQLiteCommand cmd) { _command = cmd; _parameterList = new List<SQLiteParameter>(); _unboundFlag = true; } /// <summary> /// Returns true /// </summary> public override bool IsSynchronized { get { return true; } } /// <summary> /// Returns false /// </summary> public override bool IsFixedSize { get { return false; } } /// <summary> /// Returns false /// </summary> public override bool IsReadOnly { get { return false; } } /// <summary> /// Returns null /// </summary> public override object SyncRoot { get { return null; } } /// <summary> /// Retrieves an enumerator for the collection /// </summary> /// <returns>An enumerator for the underlying array</returns> public override System.Collections.IEnumerator GetEnumerator() { return _parameterList.GetEnumerator(); } /// <summary> /// Adds a parameter to the collection /// </summary> /// <param name="paramName">The parameter name</param> /// <param name="dbType">The data type</param> /// <param name="nSize">The size of the value</param> /// <param name="sourceColumn">The source column</param> /// <returns>A SQLiteParameter object</returns> public SQLiteParameter Add(string paramName, DbType dbType, int nSize, string sourceColumn) { SQLiteParameter param = new SQLiteParameter(paramName, dbType, nSize, sourceColumn); Add(param); return param; } /// <summary> /// Adds a parameter to the collection /// </summary> /// <param name="paramName">The parameter name</param> /// <param name="dbType">The data type</param> /// <param name="nSize">The size of the value</param> /// <returns>A SQLiteParameter object</returns> public SQLiteParameter Add(string paramName, DbType dbType, int nSize) { SQLiteParameter param = new SQLiteParameter(paramName, dbType, nSize); Add(param); return param; } /// <summary> /// Adds a parameter to the collection /// </summary> /// <param name="paramName">The parameter name</param> /// <param name="dbType">The data type</param> /// <returns>A SQLiteParameter object</returns> public SQLiteParameter Add(string paramName, DbType dbType) { SQLiteParameter param = new SQLiteParameter(paramName, dbType); Add(param); return param; } /// <summary> /// Adds a parameter to the collection /// </summary> /// <param name="p">The parameter to add</param> /// <returns>A zero-based index of where the parameter is located in the array</returns> public int Add(SQLiteParameter p) { int n = -1; if (p.ParameterName != null) { n = IndexOf(p.ParameterName); |
︙ | ︙ | |||
136 137 138 139 140 141 142 | SetParameter(n, p); return n; } /// <summary> | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > > | 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 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 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 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 | SetParameter(n, p); return n; } /// <summary> /// Adds a parameter to the collection /// </summary> /// <param name="value">The parameter to add</param> /// <returns>A zero-based index of where the parameter is located in the array</returns> public override int Add(object value) { return Add((SQLiteParameter)value); } /// <summary> /// Adds an array of parameters to the collection /// </summary> /// <param name="values">The array of parameters to add</param> public void AddRange(SQLiteParameter[] values) { int x = values.Length; for (int n = 0; n < x; n++) Add(values[n]); } /// <summary> /// Adds an array of parameters to the collection /// </summary> /// <param name="values">The array of parameters to add</param> public override void AddRange(Array values) { int x = values.Length; for (int n = 0; n < x; n++) Add((SQLiteParameter)(values.GetValue(n))); } /// <summary> /// Obsolete /// </summary> /// <param name="parameterName"></param> /// <returns></returns> [Obsolete] protected override int CheckName(string parameterName) { throw new NotImplementedException(); } /// <summary> /// Clears the array and resets the collection /// </summary> public override void Clear() { _unboundFlag = true; _parameterList.Clear(); } /// <summary> /// Determines if the named parameter exists in the collection /// </summary> /// <param name="value">The name of the parameter to check</param> /// <returns>True if the parameter is in the collection</returns> public override bool Contains(string value) { return (IndexOf(value) != -1); } /// <summary> /// Determines if the parameter exists in the collection /// </summary> /// <param name="value">The SQLiteParameter to check</param> /// <returns>True if the parameter is in the collection</returns> public override bool Contains(object value) { return _parameterList.Contains((SQLiteParameter)value); } /// <summary> /// Not implemented /// </summary> /// <param name="array"></param> /// <param name="index"></param> public override void CopyTo(Array array, int index) { throw new NotImplementedException(); } /// <summary> /// Returns a count of parameters in the collection /// </summary> public override int Count { get { return _parameterList.Count; } } #if !PLATFORM_COMPACTFRAMEWORK && !BETA1 /// <summary> /// Retrieve a parameter by name from the collection /// </summary> /// <param name="parameterName">The name of the parameter to fetch</param> /// <returns>A DbParameter object</returns> protected override DbParameter GetParameter(string parameterName) { return GetParameter(IndexOf(parameterName)); } #endif /// <summary> /// Retrieves a parameter by its index in the collection /// </summary> /// <param name="index">The index of the parameter to retrieve</param> /// <returns>A DbParameter object</returns> protected override DbParameter GetParameter(int index) { return _parameterList[index]; } /// <summary> /// Returns the index of a parameter given its name /// </summary> /// <param name="parameterName">The name of the parameter to find</param> /// <returns>-1 if not found, otherwise a zero-based index of the parameter</returns> public override int IndexOf(string parameterName) { int x = _parameterList.Count; for (int n = 0; n < x; n++) { if (String.Compare(parameterName, _parameterList[n].ParameterName, true) == 0) return n; } return -1; } /// <summary> /// Returns the index of a parameter /// </summary> /// <param name="value">The parameter to find</param> /// <returns>-1 if not found, otherwise a zero-based index of the parameter</returns> public override int IndexOf(object value) { return _parameterList.IndexOf((SQLiteParameter)value); } /// <summary> /// Inserts a parameter into the array at the specified location /// </summary> /// <param name="index">The zero-based index to insert the parameter at</param> /// <param name="value">The parameter to insert</param> public override void Insert(int index, object value) { _unboundFlag = true; _parameterList.Insert(index, (SQLiteParameter)value); } /// <summary> /// Removes a parameter from the collection /// </summary> /// <param name="value">The parameter to remove</param> public override void Remove(object value) { _unboundFlag = true; _parameterList.Remove((SQLiteParameter)value); } /// <summary> /// Removes a parameter from the collection given its name /// </summary> /// <param name="parameterName">The name of the parameter to remove</param> public override void RemoveAt(string parameterName) { Remove(IndexOf(parameterName)); } /// <summary> /// Removes a parameter from the collection given its index /// </summary> /// <param name="index">The zero-based parameter index to remove</param> public override void RemoveAt(int index) { _unboundFlag = true; _parameterList.RemoveAt(index); } #if !PLATFORM_COMPACTFRAMEWORK && !BETA1 /// <summary> /// Re-assign the named parameter to a new parameter object /// </summary> /// <param name="parameterName">The name of the parameter to replace</param> /// <param name="value">The new parameter</param> protected override void SetParameter(string parameterName, DbParameter value) { SetParameter(IndexOf(parameterName), value); } #endif /// <summary> /// Re-assign a parameter at the specified index /// </summary> /// <param name="index">The zero-based index of the parameter to replace</param> /// <param name="value">The new parameter</param> protected override void SetParameter(int index, DbParameter value) { _unboundFlag = true; _parameterList[index] = (SQLiteParameter)value; } /// <summary> /// Un-binds all parameters from their statements /// </summary> internal void Unbind() { _unboundFlag = true; } /// <summary> /// This function attempts to map all parameters in the collection to all statements in a Command. |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteStatement.cs.
︙ | ︙ | |||
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | using System.Collections.Generic; /// <summary> /// Represents a single SQL statement in SQLite. /// </summary> internal sealed class SQLiteStatement : IDisposable { internal SQLiteBase _sql; internal string _sqlStatement; internal int _sqlite_stmt; internal int _unnamedParameterStart; internal string[] _paramNames; internal SQLiteParameter[] _paramValues; internal SQLiteStatement(SQLiteBase sqlbase, int stmt, string strCommand, ref int nCmdStart) { _paramNames = null; _paramValues = null; _unnamedParameterStart = nCmdStart; _sql = sqlbase; | > > > > > > > > > > > > > > > > > > > > > > > > > | 11 12 13 14 15 16 17 18 19 20 21 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 54 55 56 | using System.Collections.Generic; /// <summary> /// Represents a single SQL statement in SQLite. /// </summary> internal sealed class SQLiteStatement : IDisposable { /// <summary> /// The underlying SQLite object this statement is bound to /// </summary> internal SQLiteBase _sql; /// <summary> /// The command text of this SQL statement /// </summary> internal string _sqlStatement; /// <summary> /// The actual statement pointer /// </summary> internal int _sqlite_stmt; /// <summary> /// An index from which unnamed parameters begin /// </summary> internal int _unnamedParameterStart; /// <summary> /// Names of the parameters as SQLite understands them to be /// </summary> internal string[] _paramNames; /// <summary> /// Parameters for this statement /// </summary> internal SQLiteParameter[] _paramValues; /// <summary> /// Initializes the statement and attempts to get all information about parameters in the statement /// </summary> /// <param name="sqlbase">The base SQLite object</param> /// <param name="stmt">The statement</param> /// <param name="strCommand">The command text for this statement</param> /// <param name="nCmdStart">The index at which to start numbering unnamed parameters</param> internal SQLiteStatement(SQLiteBase sqlbase, int stmt, string strCommand, ref int nCmdStart) { _paramNames = null; _paramValues = null; _unnamedParameterStart = nCmdStart; _sql = sqlbase; |
︙ | ︙ | |||
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 | } _paramNames[x] = s; _paramValues[x] = null; } } } internal void MapParameter(string s, SQLiteParameter p) { if (_paramNames == null) return; int x = _paramNames.Length; for (int n = 0; n < x; n++) { if (String.Compare(_paramNames[n], s, true) == 0) { _paramValues[n] = p; break; } } } #region IDisposable Members public void Dispose() { _sql.Finalize(this); _paramNames = null; _paramValues = null; _sql = null; | > > > > > > > > > | 77 78 79 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 108 109 110 111 112 113 114 115 | } _paramNames[x] = s; _paramValues[x] = null; } } } /// <summary> /// Called by SQLiteParameterCollection, this function determines if the specified parameter name belongs to /// this statement, and if so, keeps a reference to the parameter so it can be bound later. /// </summary> /// <param name="s">The parameter name to map</param> /// <param name="p">The parameter to assign it</param> internal void MapParameter(string s, SQLiteParameter p) { if (_paramNames == null) return; int x = _paramNames.Length; for (int n = 0; n < x; n++) { if (String.Compare(_paramNames[n], s, true) == 0) { _paramValues[n] = p; break; } } } #region IDisposable Members /// <summary> /// Disposes and finalizes the statement /// </summary> public void Dispose() { _sql.Finalize(this); _paramNames = null; _paramValues = null; _sql = null; |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteTransaction.cs.
︙ | ︙ | |||
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | using System.Data.Common; /// <summary> /// SQLite implementation of DbTransaction. /// </summary> public sealed class SQLiteTransaction : DbTransaction { private SQLiteConnection _cnn; internal SQLiteTransaction(SQLiteConnection cnn) { try { cnn._sql.Execute("BEGIN"); _cnn = cnn; } | > > > > > > > | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | using System.Data.Common; /// <summary> /// SQLite implementation of DbTransaction. /// </summary> public sealed class SQLiteTransaction : DbTransaction { /// <summary> /// The connection to which this transaction is bound /// </summary> private SQLiteConnection _cnn; /// <summary> /// Constructs the transaction object, binding it to the supplied connection /// </summary> /// <param name="cnn">The connection to open a transaction on</param> internal SQLiteTransaction(SQLiteConnection cnn) { try { cnn._sql.Execute("BEGIN"); _cnn = cnn; } |
︙ | ︙ |
Changes to System.Data.SQLite/System.Data.SQLite.csproj.
︙ | ︙ | |||
18 19 20 21 22 23 24 | <Optimize>false</Optimize> <OutputPath>.\bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <PlatformTarget>x86</PlatformTarget> <DocumentationFile>bin\Debug\System.Data.SQLite.XML</DocumentationFile> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | | | > | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <Optimize>false</Optimize> <OutputPath>.\bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <PlatformTarget>x86</PlatformTarget> <DocumentationFile>bin\Debug\System.Data.SQLite.XML</DocumentationFile> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>none</DebugType> <Optimize>true</Optimize> <OutputPath>..\bin\</OutputPath> <DefineConstants> </DefineConstants> <PlatformTarget>x86</PlatformTarget> <DebugSymbols>false</DebugSymbols> <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies> <NoStdLib>false</NoStdLib> <DocumentationFile>bin\Release\System.Data.SQLite.XML</DocumentationFile> <FileAlignment>512</FileAlignment> </PropertyGroup> <ItemGroup> <Reference Include="System" /> <Reference Include="System.Data" /> <Reference Include="System.XML" /> </ItemGroup> <ItemGroup> |
︙ | ︙ |