Re: [sqlite] Support for System.Data.SQLite: Different API type for int/integer columns
I use Convert.ToInt32 (or whatever else is appropriate) instead of direct casts when reading from System.Data.SQLite... I use a very similar schema in an SQLServer and SQLite database, and Convert seems to handle many of the differences without requiring different code for each database engine. On Mon, 28 Jan 2019 at 03:31, Joe Mistachkin wrote: > > JP wrote: > > > > The answers don't explain why there is a bitness difference at run-time > > between the types retrieved from INT and INTEGER columns, and that's my > > question. From reading https://sqlite.org/datatype3.html I understand > > there should be no difference whatsoever between defining a column INT > > or INTEGER (other than whether a primary key may become a rowid alias). > > > > System.Data.SQLite maps type names to their associated types. Mappings > can be overridden on a per-connection basis. By default, INT maps to a > 32-bit integer and INTEGER maps to a 64-bit integer, mostly for reasons > of backward compatibility. > > In order to customize the mappings, the flag UseConnectionTypes should > be used when opening the connection -AND- the AddTypeMapping method is > used to override a built-in mapping of the same name (e.g. "INT"). > > -- > Joe Mistachkin > > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] Support for System.Data.SQLite: Different API type for int/integer columns
JP wrote: > > The answers don't explain why there is a bitness difference at run-time > between the types retrieved from INT and INTEGER columns, and that's my > question. From reading https://sqlite.org/datatype3.html I understand > there should be no difference whatsoever between defining a column INT > or INTEGER (other than whether a primary key may become a rowid alias). > System.Data.SQLite maps type names to their associated types. Mappings can be overridden on a per-connection basis. By default, INT maps to a 32-bit integer and INTEGER maps to a 64-bit integer, mostly for reasons of backward compatibility. In order to customize the mappings, the flag UseConnectionTypes should be used when opening the connection -AND- the AddTypeMapping method is used to override a built-in mapping of the same name (e.g. "INT"). -- Joe Mistachkin ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] Support for System.Data.SQLite: Different API type for int/integer columns
On 24 Jan 2019, at 3:27pm, JP wrote: > I have encountered the same problem as this: > https://stackoverflow.com/q/4925084 What is returned by typeof(reader["myColumn"]) in each case ? I suspect that you're getting an integer when the column is declared as INTEGER, but not when the column is declared as INT. Simon. ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
[sqlite] Support for System.Data.SQLite: Different API type for int/integer columns
Hello, I have encountered the same problem as this: https://stackoverflow.com/q/4925084 The answers don't explain why there is a bitness difference at run-time between the types retrieved from INT and INTEGER columns, and that's my question. From reading https://sqlite.org/datatype3.html I understand there should be no difference whatsoever between defining a column INT or INTEGER (other than whether a primary key may become a rowid alias). I don't mean the bitness how the integers are stored in the disk database, but the values returned by the System.Data.SQLite API (in particular via a DataTable loaded by a SQLiteDataReader). I have verified that declaring a column (which isn't any kind of key) as INT causes System.Data.SQLite to return Int32/int (possibly, depending on the value? Not sure); and declaring INTEGER causes the same value to be returned as Int64/long. Can anyone explain this, or point to where this is actually documented, if I've missed it? It's the first time I use this mailing list, after searching for the answer on sqlite.org and around the Web; I hope I haven't missed any RTFM, otherwise please let me know. Thanks Xavier Porras ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users