Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add a new overload for the SQLiteBlob.Create method that is a thinner wrapper over the native API, for greater efficiency. Pursuant to [dfc8133ba2]. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
e28ff15b0e6ad569caa7abc7a98272fb |
User & Date: | mistachkin 2018-04-18 15:27:56.659 |
Context
2018-04-18
| ||
15:48 | Update version history docs. check-in: 6f0089d0c2 user: mistachkin tags: trunk | |
15:27 | Add a new overload for the SQLiteBlob.Create method that is a thinner wrapper over the native API, for greater efficiency. Pursuant to [dfc8133ba2]. check-in: e28ff15b0e user: mistachkin tags: trunk | |
2018-04-13
| ||
12:56 | Update SQLite core library to the 3.23.1 release. check-in: a6429adaa8 user: mistachkin tags: trunk | |
Changes
Changes to System.Data.SQLite/SQLiteBlob.cs.
︙ | ︙ | |||
70 71 72 73 74 75 76 | /// </returns> public static SQLiteBlob Create( SQLiteDataReader dataReader, int i, bool readOnly ) { | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | > > > > | > | < < < < < | | < | < | | | | | 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 | /// </returns> public static SQLiteBlob Create( SQLiteDataReader dataReader, int i, bool readOnly ) { if (dataReader == null) throw new ArgumentNullException("dataReader"); long? rowId = dataReader.GetRowId(i); if (rowId == null) throw new InvalidOperationException("No RowId is available"); return Create( SQLiteDataReader.GetConnection(dataReader), dataReader.GetDatabaseName(i), dataReader.GetTableName(i), dataReader.GetName(i), (long)rowId, readOnly); } /////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> /// Creates a <see cref="SQLiteBlob" /> object. This will not work /// for tables that were created WITHOUT ROWID. /// </summary> /// <param name="connection"> /// The connection to use when opening the blob object. /// </param> /// <param name="databaseName"> /// The name of the database containing the blob object. /// </param> /// <param name="tableName"> /// The name of the table containing the blob object. /// </param> /// <param name="columnName"> /// The name of the column containing the blob object. /// </param> /// <param name="rowId"> /// The integer identifier for the row associated with the desired /// blob object. /// </param> /// <param name="readOnly"> /// Non-zero to open the blob object for read-only access. /// </param> /// <returns> /// The newly created <see cref="SQLiteBlob" /> instance -OR- null /// if an error occurs. /// </returns> public static SQLiteBlob Create( SQLiteConnection connection, string databaseName, string tableName, string columnName, long rowId, bool readOnly ) { if (connection == null) throw new ArgumentNullException("connection"); SQLite3 sqlite3 = connection._sql as SQLite3; if (sqlite3 == null) throw new InvalidOperationException("Connection has no wrapper"); SQLiteConnectionHandle handle = sqlite3._sql; if (handle == null) throw new InvalidOperationException("Connection has an invalid handle."); SQLiteBlobHandle blob = null; try { // do nothing. } finally /* NOTE: Thread.Abort() protection. */ { IntPtr ptrBlob = IntPtr.Zero; SQLiteErrorCode rc = UnsafeNativeMethods.sqlite3_blob_open( handle, SQLiteConvert.ToUTF8(databaseName), SQLiteConvert.ToUTF8(tableName), SQLiteConvert.ToUTF8( columnName), rowId, readOnly ? 0 : 1, ref ptrBlob); if (rc != SQLiteErrorCode.Ok) throw new SQLiteException(rc, null); blob = new SQLiteBlobHandle(handle, ptrBlob); } SQLiteConnection.OnChanged(connection, new ConnectionEventArgs( SQLiteConnectionEventType.NewCriticalHandle, null, null, null, null, blob, null, new object[] { typeof(SQLiteBlob), databaseName, tableName, columnName, rowId, readOnly })); return new SQLiteBlob(sqlite3, blob); } #endregion /////////////////////////////////////////////////////////////////////////////////////////////// |
︙ | ︙ |