Here is the snippet of the code:
int InsertIntoDatabase(char *TimeStamp, int Source, u_int32_t SeqNum, char
*MD5Sum)
{
int ReturnCode;
sqlite3_stmt *InsertStmtHandle;
strcpy(SqlString, "INSERT INTO mytable(TimeStamp, col2, col3, col4) VALUES
(?,?,?,?)");
ReturnCode = sqlite3_prepare_v2(DbHandle, SqlString, -1, &InsertStmtHandle,
NULL);
if (ReturnCode != SQLITE_OK || InsertStmtHandle == NULL)
{
sqlite3_reset(InsertStmtHandle);
printf("Cannot prepare insert statement. %s\n", sqlite3_errmsg(DbHandle));
return(2);
}
ReturnCode = sqlite3_bind_text(InsertStmtHandle, 1, TimeStamp, -1,
SQLITE_TRANSIENT);
if (ReturnCode != SQLITE_OK)
{
sqlite3_reset(InsertStmtHandle);
printf("Error binding insert statement 1. ReturnCode: %d, Error
Message:%s, Error Code: %d\n",
ReturnCode, sqlite3_errmsg(DbHandle), sqlite3_errcode(DbHandle));
return(2);
}
ReturnCode = sqlite3_bind_int(InsertStmtHandle, 2, Source);
if (ReturnCode != SQLITE_OK)
{
sqlite3_reset(InsertStmtHandle);
printf("Error binding insert statement 2. ReturnCode: %d, Error
Message:%s, Error Code: %d\n",
ReturnCode, sqlite3_errmsg(DbHandle), sqlite3_errcode(DbHandle));
return(2);
}
ReturnCode = sqlite3_bind_int(InsertStmtHandle, 3, SeqNum);
if (ReturnCode != SQLITE_OK)
{
sqlite3_reset(InsertStmtHandle);
printf("Error binding insert statement 3. ReturnCode: %d, Error
Message:%s, Error Code: %d\n",
ReturnCode, sqlite3_errmsg(DbHandle), sqlite3_errcode(DbHandle));
return(2);
}
ReturnCode = sqlite3_bind_text(InsertStmtHandle, 4, MD5Sum, -1,
SQLITE_TRANSIENT);
if (ReturnCode != SQLITE_OK)
{
sqlite3_reset(InsertStmtHandle);
printf("Error binding insert statement 4. ReturnCode: %d, Error
Message:%s, Error Code: %d\n",
ReturnCode, sqlite3_errmsg(DbHandle), sqlite3_errcode(DbHandle));
return(2);
}
ReturnCode = sqlite3_step(InsertStmtHandle);
if (ReturnCode != SQLITE_DONE)
{
sqlite3_reset(InsertStmtHandle);
if (sqlite3_errcode(DbHandle) == SQLITE_CONSTRAINT)
{
/*
* Duplicate row.
*/
sqlite3_finalize(InsertStmtHandle);
sqlite3_exec(DbHandle, "COMMIT", NULL, NULL, NULL);
return(1);
}
else
{
/*
* Other error.
*/
printf("Cannot insert into database. %s\n", sqlite3_errmsg(DbHandle));
sqlite3_finalize(InsertStmtHandle);
sqlite3_exec(DbHandle, "COMMIT", NULL, NULL, NULL);
return(2);
}
}
sqlite3_finalize(InsertStmtHandle);
sqlite3_exec(DbHandle, "COMMIT", NULL, NULL, NULL);
return(0);
}
int GetMessageFromDB(char *MD5Sum, struct ReceiveNode *FromDb)
{
int ReturnCode;
sqlite3_stmt *SelectStmtHandle;
strcpy(SqlString, "SELECT TimeStamp, col2, col3, col4 FROM mytable WHERE
col4 = ?");
ReturnCode = sqlite3_prepare_v2(DbHandle, SqlString, -1, &SelectStmtHandle,
NULL);
if (ReturnCode != SQLITE_OK || SelectStmtHandle == NULL)
{
sqlite3_reset(SelectStmtHandle);
printf("Cannot prepare select statement. %s\n", sqlite3_errmsg(DbHandle));
return(2);
}
ReturnCode = sqlite3_bind_text(SelectStmtHandle, 1, MD5Sum, -1,
SQLITE_TRANSIENT);
if (ReturnCode != SQLITE_OK)
{
sqlite3_reset(SelectStmtHandle);
printf("Error binding select statement. ReturnCode: %d, Error Message:%s,
Error Code: %d\n",
ReturnCode, sqlite3_errmsg(DbHandle), sqlite3_errcode(DbHandle));
return(2);
}
ReturnCode = sqlite3_step(SelectStmtHandle);
if (ReturnCode != SQLITE_ROW)
{
sqlite3_reset(SelectStmtHandle);
printf("Row not found. ReturnCode: %d, Error Message:%s, Error Code:
%d\n",
ReturnCode, sqlite3_errmsg(DbHandle), sqlite3_errcode(DbHandle));
return(2);
}
/* Copy data to FromDb structure) */
sqlite3_finalize(SelectStmtHandle);
return(1);
}
/* Main */
if (InsertIntoDatabase(TimeStamp, Source, SeqNum, MD5Sum) == 1)
{
if (GetMessageFromDB(MD5Sum, &FromDb) == 1)
{
/* print message */
}
else
{
/* print error message */
}
}
Hemant Shah
E-mail: [email protected]
--- On Wed, 12/1/10, Black, Michael (IS) <[email protected]> wrote:
> From: Black, Michael (IS) <[email protected]>
> Subject: Re: [sqlite] Select fails even though data is in the table.
> To: "General Discussion of SQLite Database" <[email protected]>
> Date: Wednesday, December 1, 2010, 10:23 AM
> If you bind the wrong thing the wrong
> way the return code doesn't matter.
>
> Any particular reason you can't just show us the whole code
> section?
>
> Michael D. Black
> Senior Scientist
> Advanced Analytics Directorate
> Northrop Grumman Information Systems
>
>
> ________________________________
>
> From: [email protected]
> on behalf of Hemant Shah
> Sent: Wed 12/1/2010 10:21 AM
> To: General Discussion of SQLite Database
> Subject: EXTERNAL:Re: [sqlite] Select fails even though
> data is in the table.
>
>
>
> I check for the return code after each bind call and if it
> is not SQLITE_OK then I return with error. So I do not think
> it is a bind problem.
>
>
>
> Hemant Shah
> E-mail: [email protected]
>
>
>
>
>
> -----Inline Attachment Follows-----
>
> _______________________________________________
> sqlite-users mailing list
> [email protected]
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users