Thanks John. After incorporate a few changes, the code can compile and run.
The result seems reasonable, the input infinity
std::numeric_limits<double>::max() is sent to and retrieved from a sqlite3
database correctly.
--terminal output
sqlite3 tempdb
sqlite> select * from tl;
1.1
1.79769313486232e+308
-1.79769313486232e+308
3.3
--source code --
#include <limits>
#include <string>
#include <iostream>
#include <cassert>
#include <sqlite3.h>
using namespace std;
int main(){
double infinity = std::numeric_limits<double>::max();
double ninfinity = - std::numeric_limits<double>::max();
sqlite3 *db;
char *zErrMsg = 0;
int rc;
rc = sqlite3_open("tempdb", &db);
if( rc ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
sqlite3_stmt* create_tl;
rc = sqlite3_prepare_v2(db, "create table tl (number real)", -1,
&create_tl,NULL);
if ( rc != SQLITE_OK) exit(rc);
rc = sqlite3_step(create_tl);
if ( rc != SQLITE_DONE) exit(rc);
sqlite3_stmt* insert_tl;
rc = sqlite3_prepare_v2(db,"insert into tl values(:number)",-1,
&insert_tl,NULL);
if ( rc != SQLITE_OK) exit(rc);
sqlite3_bind_double(insert_tl, 1, 1.1);
rc = sqlite3_step(insert_tl);
if (rc != SQLITE_DONE)
exit(rc);
sqlite3_reset(insert_tl);
sqlite3_bind_double(insert_tl, 1, infinity);
rc = sqlite3_step(insert_tl);
if (rc != SQLITE_DONE)
exit(rc);
sqlite3_reset(insert_tl);
sqlite3_bind_double(insert_tl, 1, ninfinity);
rc = sqlite3_step(insert_tl);
if (rc != SQLITE_DONE)
exit(rc);
sqlite3_reset(insert_tl);
sqlite3_bind_double(insert_tl, 1, 3.3);
rc = sqlite3_step(insert_tl);
if (rc != SQLITE_DONE)
exit(rc);
sqlite3_stmt* select_tl;
rc = sqlite3_prepare_v2(db, "select * from tl",-1,&select_tl,NULL);
if (rc != SQLITE_OK)
exit(rc);
while ( sqlite3_step(select_tl) == SQLITE_ROW){
printf("%e",sqlite3_column_double(select_tl,0));
printf("\n");
}
if (rc != SQLITE_DONE)
exit(rc);
sqlite3_finalize(select_tl);
sqlite3_close(db);
printf("exit normally\n");
}
--
Best regards,
Michael Chen
Google Voice Phone.: 847-448-0647
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users