Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Modified coersion code to allow more flexibility and fix inherent bugs |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | sourceforge |
Files: | files | file ages | folders |
SHA1: |
1f1116559dacc319838cc9c7112ffd10 |
User & Date: | rmsimpson 2005-11-18 15:37:30.000 |
Context
2005-11-18
| ||
15:58 | Fixed LONGTEXT and LONGCHAR that were being incorrectly typed check-in: 10eda27cb2 user: rmsimpson tags: sourceforge | |
15:37 | Modified coersion code to allow more flexibility and fix inherent bugs check-in: 1f1116559d user: rmsimpson tags: sourceforge | |
15:36 | Added a few new ISO8601 datetime conversion patterns check-in: e7ba6b83c2 user: rmsimpson tags: sourceforge | |
Changes
Changes to System.Data.SQLite/SQLite3.cs.
︙ | ︙ | |||
287 288 289 290 291 292 293 | { 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) { | < < > < | 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 | { 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); nAffinity = UnsafeNativeMethods.sqlite3_column_type_interop(stmt._sqlite_stmt, index); if (p != IntPtr.Zero) return ToString(p, len); else { switch (nAffinity) { case TypeAffinity.Int64: return "BIGINT"; case TypeAffinity.Double: return "DOUBLE"; case TypeAffinity.Blob: |
︙ | ︙ |
Changes to System.Data.SQLite/SQLite3_UTF16.cs.
︙ | ︙ | |||
103 104 105 106 107 108 109 | { int len; return ToString(UnsafeNativeMethods.sqlite3_column_text16_interop(stmt._sqlite_stmt, index, out len), len); } internal override string ColumnType(SQLiteStatement stmt, int index, out TypeAffinity nAffinity) { | < < > < | 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | { int len; return ToString(UnsafeNativeMethods.sqlite3_column_text16_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_decltype16_interop(stmt._sqlite_stmt, index, out len); nAffinity = UnsafeNativeMethods.sqlite3_column_type_interop(stmt._sqlite_stmt, index); if (p != IntPtr.Zero) return ToString(p, len); else { switch (nAffinity) { case TypeAffinity.Int64: return "BIGINT"; case TypeAffinity.Double: return "DOUBLE"; case TypeAffinity.Blob: |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteDataReader.cs.
︙ | ︙ | |||
171 172 173 174 175 176 177 | /// <param name="typ">The type we want to get out of the column</param> private void VerifyType(int i, DbType typ) { SQLiteType t = GetSQLiteType(i); if (t.Type == typ) return; | < < | | | | | | | | | | | | | | | | | | | | | | | | | < | 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 | /// <param name="typ">The type we want to get out of the column</param> private void VerifyType(int i, DbType typ) { SQLiteType t = GetSQLiteType(i); if (t.Type == typ) return; // Coercable type, usually a literal of some kind switch (_fieldTypeArray[i].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; break; case TypeAffinity.Double: if (typ == DbType.Single) return; if (typ == DbType.Double) return; if (typ == DbType.Decimal) return; break; case TypeAffinity.Text: if (typ == DbType.SByte) return; if (typ == DbType.String) return; if (typ == DbType.SByte) return; if (typ == DbType.Guid) return; if (typ == DbType.DateTime) return; break; case TypeAffinity.Blob: if (typ == DbType.String) return; if (typ == DbType.Binary) return; break; } throw new InvalidCastException(); } /// <summary> /// Retrieves the column as a boolean value |
︙ | ︙ | |||
726 727 728 729 730 731 732 | /// <param name="i">The index of the column to retrieve</param> /// <returns>A SQLiteType structure</returns> private SQLiteType GetSQLiteType(int i) { CheckClosed(); if (_fieldTypeArray == null) _fieldTypeArray = new SQLiteType[_fieldCount]; | | | 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 | /// <param name="i">The index of the column to retrieve</param> /// <returns>A SQLiteType structure</returns> private SQLiteType GetSQLiteType(int i) { CheckClosed(); if (_fieldTypeArray == null) _fieldTypeArray = new SQLiteType[_fieldCount]; if (_fieldTypeArray[i].Affinity == TypeAffinity.Uninitialized || _fieldTypeArray[i].Affinity == TypeAffinity.Null) _fieldTypeArray[i].Type = SQLiteConvert.TypeNameToDbType(_activeStatement._sql.ColumnType(_activeStatement, i, out _fieldTypeArray[i].Affinity)); return _fieldTypeArray[i]; } /// <summary> /// Reads the next row from the resultset /// </summary> |
︙ | ︙ |