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
 
     
    