I am sorta new to sqlite especially in a C setting. I am trying to insert a record into my table.
Here is my code:
int InsertIntoFileActionTable(FileActionData* fad)
{
sqlite3_stmt * stmt;
char *ErrMsg;
const char *pzTail;
int result = 0;
string sql;
sql = "INSERT INTO FileActionData (RootName, RootDirectory, RelativePath, ParentPath, FileName, Stem, Extension, UserName, SignalFlag, ProcessID, ProtectionOn, BSSMember, ProcessTime) ";
sql += "VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
result = sqlite3_prepare(pDb, &sql[0], 1000, &stmt, &pzTail);//This reseult is x00001
result = sqlite3_bind_text16(stmt, 1, (void*)(&fad->RootName[0]), fad->RootName.length(), SQLITE_STATIC);//This reseult is x00015 SQLITE_MISUSE
result = sqlite3_bind_text16(stmt, 2, (void*)(&fad->RootDirectory[0]), fad->RelativePath.length(), SQLITE_STATIC);//This reseult is x00015 SQLITE_MISUSE
result = sqlite3_bind_text16(stmt, 3, (void*)(&fad->RelativePath[0]), fad->RelativePath.length(), SQLITE_STATIC);//This reseult is x00015 SQLITE_MISUSE
result = sqlite3_bind_text16(stmt, 4, (void*)(&fad->ParentPath[0]), fad->ParentPath.length(), SQLITE_STATIC);//This reseult is x00015 SQLITE_MISUSE
result = sqlite3_bind_text16(stmt, 5, (void*)(&fad->FileName[0]), fad->FileName.length(), SQLITE_STATIC);//This reseult is x00015 SQLITE_MISUSE
result = sqlite3_bind_text16(stmt, 6, (void*)(&fad->Stem[0]), fad->Stem.length(), SQLITE_STATIC);//This reseult is x00015 SQLITE_MISUSE
result = sqlite3_bind_text16(stmt, 7, (void*)(&fad->Extension[0]), fad->Extension.length(), SQLITE_STATIC);//This reseult is x00015 SQLITE_MISUSE
result = sqlite3_bind_text16(stmt, 8, (void*)(&fad->UserName[0]), fad->UserName.length(), SQLITE_STATIC);//This reseult is x00015 SQLITE_MISUSE
result = sqlite3_bind_int(stmt, 9, fad->SignalFlag);//This reseult is x00015 SQLITE_MISUSE
result = sqlite3_bind_int(stmt, 10, fad->ProcessID);//This reseult is x00015 SQLITE_MISUSE
result = sqlite3_bind_int(stmt, 11, fad->ProtectionOn);//This reseult is x00015 SQLITE_MISUSE
result = sqlite3_bind_int(stmt, 12, fad->BSSMember);//This reseult is x00015 SQLITE_MISUSE
result = sqlite3_bind_int(stmt, 13, fad->ProcessTime);//This reseult is x00015 SQLITE_MISUSE
result = sqlite3_step(stmt);//This reseult is x00015 SQLITE_MISUSE
if (result == SQLITE_MISUSE)
{
printf("MISUSE error");
}
return result;
}
Here is my FileActionData definition:
class FileActionData
{
public:
std::wstring RootName;
std::wstring RootDirectory;
std::wstring RelativePath;
std::wstring ParentPath;
std::wstring FileName;
std::wstring Stem;
std::wstring Extension;
unsigned long SignalFlag;
unsigned long ProcessID;
BOOL ProtectionOn;
BOOL BSSMember;
std::wstring UserName;
time_t ProcessTime;
};
The error I get is a 1 (Generic) on the Prepare and x15 (21)(Misuse) on the other calls.
Additional info added: I also tried:
result = sqlite3_prepare16_v3(pDb, &sql[0], 1000, 0, &stmt, (const
void**)&pzTail);//This result is x00001
the stmt is null which is why the rest of my calls return Misuse.
pDb is opened elsewhere.
What am I doing wrong? TIA