我已经尝试过 strcpy、memcpy 等。但不幸的是,在完成 sqlite 后,char 数据仍然损坏。但是 CString 数据没有任何反应。我知道我必须在完成之前将该字段复制到另一个字段中,但它不起作用。我也不确定是否可以安全地使用 CString 数据。
CString StrDescription;
char dbDescription1[110+1];
const char *data = NULL;
char *SQLString= new char[SQLStr.GetLength()+1] ;
memset(SQLString,0x00,sizeof(SQLString)-1);wcstombs(SQLString,SQLStr,SQLStr.GetLength());SQLString[SQLStr.GetLength()]='\0';
if ( sqlite3_prepare_v2( db,SQLString , -1, &stmt, NULL )!= SQLITE_OK)
{
sqlite3_finalize( stmt ); sqlite3_close(db); delete[] SQLString; return -1;
}
delete[] SQLString;
if( sqlite3_step( stmt ) == SQLITE_ROW )
{
data = (const char*)sqlite3_column_text( stmt, 4 ); sprintf(dbDescription1 ,"%s",data);
StrDescription = CString(data);
}
AfxMessageBox(CString(dbDescription)); // Result is ok here..
AfxMessageBox(StrDescription); // Result is ok here as well.
sqlite3_finalize( stmt ); sqlite3_close(db);
AfxMessageBox(CString(dbDescription)); // Result corrupt here
AfxMessageBox(StrDescription); // Result still ok
Thanks