Sorry about that. No I do not have single quotes around ?.

strcpy(SqlString, "INSERT INTO find_retransmissions(InsTimeStamp, SrcIp, DstIp, 
TimeStamp, SrcP ort, DstPort, SeqNum,  MD5Sum) VALUES (?,?,?,?,?,?,?,?)");

sprintf(SqlString, "SELECT SrcIp, DstIp, TimeStamp, SrcPort, DstPort, SeqNum 
FROM find_retransmissions WHERE MD5Sum = ?");


I do not have quotes in both statemens, but insert statement works.


Hemant Shah
E-mail: hj...@yahoo.com


--- On Mon, 9/27/10, Black, Michael (IS) <michael.bla...@ngc.com> wrote:

> From: Black, Michael (IS) <michael.bla...@ngc.com>
> Subject: Re: [sqlite] sqlite cannot find the row
> To: "General Discussion of SQLite Database" <sqlite-users@sqlite.org>
> Date: Monday, September 27, 2010, 2:27 PM
> Your code is chopped off and I
> suspect the problem is on the remainder of this line:
>  
> sprintf(SqlString, "SELECT SrcIp, DstIp, TimeStamp,
> SrcPort, DstPort, SeqNum
> 
> For example, did you put single quotes around the ?
> parameter?
>  
>  
> Michael D. Black
> Senior Scientist
> Advanced Analytics Directorate
> Northrop Grumman Information Systems
>  
> 
> ________________________________
> 
> From: sqlite-users-boun...@sqlite.org
> on behalf of Hemant Shah
> Sent: Mon 9/27/2010 2:22 PM
> To: General Discussion of SQLite Database
> Subject: EXTERNAL:Re: [sqlite] sqlite cannot find the row
> 
> 
> 
> Here is the snippet of code:
> 
> int GetMessageFromDB(char *MD5Sum, struct ReceiveNode
> *FromDb)
> {
>    int ReturnCode;
>    sqlite3_stmt *SelectStmtHandle;
> 
>    sprintf(SqlString, "SELECT SrcIp, DstIp,
> TimeStamp, SrcPort, DstPort, SeqNum
>    ReturnCode = sqlite3_prepare(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);
>    }
> 
>    sqlite3_bind_text(SelectStmtHandle, 1,
> MD5Sum, strlen(MD5Sum), SQLITE_TRANSIE
>    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);
>    }
> 
>    strcpy(FromDb->SourceIP,
> sqlite3_column_text(SelectStmtHandle, 0));
>    strcpy(FromDb->DestIP,
> sqlite3_column_text(SelectStmtHandle, 1));
>    strcpy(FromDb->TimeStamp,
> sqlite3_column_text(SelectStmtHandle, 2));
>    FromDb->SourcePort =
> sqlite3_column_int(SelectStmtHandle, 3);
>    FromDb->DestPort =
> sqlite3_column_int(SelectStmtHandle, 4);
>    FromDb->SeqNum =
> sqlite3_column_int(SelectStmtHandle, 5);
>    strncpy(FromDb->MD5Sum, MD5Sum,
> MD5SUMLEN);
>    sqlite3_finalize(SelectStmtHandle);
>    return(1);
> }
> 
> int GetMessageFromDB(char *MD5Sum, struct ReceiveNode
> *FromDb)
> {
>    int ReturnCode;
>    sqlite3_stmt *SelectStmtHandle;
> 
>    sprintf(SqlString, "SELECT SrcIp, DstIp,
> TimeStamp, SrcPort, DstPort, SeqNum
>    ReturnCode = sqlite3_prepare(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);
>    }
> 
>    sqlite3_bind_text(SelectStmtHandle, 1,
> MD5Sum, strlen(MD5Sum), SQLITE_TRANSIE
>    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);
>    }
> 
>    strcpy(FromDb->SourceIP,
> sqlite3_column_text(SelectStmtHandle, 0));
>    strcpy(FromDb->DestIP,
> sqlite3_column_text(SelectStmtHandle, 1));
>    strcpy(FromDb->TimeStamp,
> sqlite3_column_text(SelectStmtHandle, 2));
>    FromDb->SourcePort =
> sqlite3_column_int(SelectStmtHandle, 3);
>    FromDb->DestPort =
> sqlite3_column_int(SelectStmtHandle, 4);
>    FromDb->SeqNum =
> sqlite3_column_int(SelectStmtHandle, 5);
>    strncpy(FromDb->MD5Sum, MD5Sum,
> MD5SUMLEN);
>    sqlite3_finalize(SelectStmtHandle);
>    return(1);
> }
> 
> if (FindDuplicateMessage(ReceiveBuf) == 1)
> {
>     GetMessageFromDB(ReceiveBuf.MD5Sum,
> &FromDb);
> }
> 
> 
> 
> When I execute this functions I get following output.
> 
> 
> Cannot insert into database. column MD5Sum is not unique
> error code = SQLITE_CONSTRAINT
> Row not found. ReturnCode: 101, Error Message:not an error,
> Error Code: 0
> 
> 
> 101 is SQLITE_DONE. So I get SQLITE_DONE instead of
> SQLITE_ROW.
> 
> 
> 
> Hemant Shah
> E-mail: hj...@yahoo.com
> 
> 
> 
> 
> 
> -----Inline Attachment Follows-----
> 
> _______________________________________________
> 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