I have a C/C++ application in which I want to store data from a struct into a
table (using SQLite 3.6.23) and later retrieve data from the table and store it
back in the struct. But, I need a general interface for this as there are many
types of structs used. So, what I have is a function that accepts a pointer to
the struct (ptr), the struct size, and a sqlite3_stmt* variable for the current
row. I then iterate through each column of the row and store the value
retrieved at ptr's address. Then I increment ptr based on the size of the
column. Thus, as long as I store and retrieve columns in the same order I
should be storing the right values in the right variables for a particular
struct instance.
However, this method breaks down if a store a 16-bit integer value like "99"
and SQLite stores it internally as an 8-bit value (to save space) and
subsequently retrieves it and gives me a value of 1 for sqlite3_column_bytes().
This causes alignment issues with the variables in the struct. So, is there a
way I can tell SQLite to preserve the data size in a particular column? E.g.:
CREATE TABLE test ( val1 INTEGER, val2 INT2, val3 INT1 ... );
Here val1 is always 4-bytes, val2 is always 2 bytes, and val3 is always 1 byte.
I'd prefer a way to do this without having to cast every last column in a
SELECT query to the right size.
Hopefully that made sense.
Thanks,
Kevin
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users