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