I guess I'm confused as to why sqlite3_column_type() would not work? It works 
for me on queries and I get back either SQLITE_INTEGER, SQLITE_FLOAT, or 
SQLITE3_TEXT. While I know the types could be coerced to something else, at 
least it is an answer of what you originally intended the column to be.

Since your generic wrapper interface is strongly typed, I would suspect that 
the values would not be coerced into strange things and maps nicely to one of 
the above types.

-Allan

> -----Original Message-----
> From: sqlite-users-boun...@sqlite.org [mailto:sqlite-users-
> boun...@sqlite.org] On Behalf Of Jay A. Kreibich
> Sent: Wednesday, September 08, 2010 3:37 PM
> To: General Discussion of SQLite Database
> Subject: Re: [sqlite] Detecting storage class from C
> 
> On Wed, Sep 08, 2010 at 10:01:48PM +0100, Andrew Wood scratched on the
> wall:
> > Because I'm writing glue code between the SQLite API and a higher
> level
> > library which provides a standard API across several DBMSs.
> >
> >   In other DBMSs even if a field contains null you can still ask the
> API
> > what type it 'should' have been if something *had* been put in it.
> > Without this ability, I cant make SQLite work with the library.
> >
> > I don't understand the reasoning for designing SQLite weakly typed
> like
> > this, it just seems bizarre.
> 
>   SQLite is not "weakly" typed.  Each value has a very specific and
>   strongly enforced type.  It just happens that type assignment happens
>   at the value level, rather than the column level.
> 
>   When I first came to SQLite from the client/server RDBMS world, I was
>   somewhat shocked as well.  But in the end, it really doesn't make
>   much of a difference.  Like most other languages, all forms of SQL
>   do a significant amount of type coercion.  Opening up that domain
>   to something larger than what a traditional programmer considers a
>   "type" doesn't really change anything.  Does it really matter that
>   -3 < 5.35667 < 'abc' ?  As long as you have a solid ordering and
>   conversion rules, there are rarely surprises.
> 
>   And if someone really cares, they can add CHECK constraints-- which
>   they should be doing anyways if they're that paranoid about
>   type-domain checking.  Simply limiting a value to an integer (or
>   whatever) is no more or less "safe" unless you further limit things
> to
>   a task-specific sub-domain of that type.
> 
>   I also have to say that handling NULLs as a value-less type is a very
>   clean and handy model.
> 
>     -j
> 
> --
> Jay A. Kreibich < J A Y  @  K R E I B I.C H >
> 
> "Intelligence is like underwear: it is important that you have it,
>  but showing it to the wrong people has the tendency to make them
>  feel uncomfortable." -- Angela Johnson
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to