阅读其他几篇文章后,似乎我想要的可能是,但此刻我有一个无符号字符数组,我希望在sqlite中输入一行表。现在我知道sqlite使用UTF-8编码,所以我应该认为能够做到这一点,但我不确定。SQLite C++插入无符号字符数组
此刻我的代码不工作,我有一个表...
void PersonalDataBase::openUserDataBase()
{
int rc;
//table setup
string table = "CREATE TABLE IF NOT EXISTS USERS (" \
"_id INTEGER PRIMARY KEY NOT NULL," \
"USERNAME TEXT NOT NULL," \
"PASSWORD TEXT," \
"USERHASH TEXT NOT NULL," \
"EVAL TEXT NOT NULL," \
"NVAL TEXT NOT NULL," \
"PVAL TEXT," \
"QVAL TEXT," \
"DVAL TEXT);";
sqlite3_stmt *stmt;
sqlite3_initialize();
/* Open database */
//Note rc should be checked for errors
rc = sqlite3_open_v2("database/data/UsersDB.db", &userDB, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
//add table
rc = sqlite3_prepare_v2(userDB, table.c_str(), -1, &stmt, 0);
sqlite3_step(stmt);
sqlite3_finalize(stmt);
}
现在呼吁这我的表创建,但现在插入它...
用于插入后我的表,我创建了一个新的条目,并生成我无符号的字符数组E,d,N,p,q,然后....
string insertQuery = "INSERT INTO USERS (USERNAME,PASSWORD,USERHASH,EVAL,NVAL,PVAL,QVAL,DVAL) " \
"VALUES ('" + username + "', '" + password + "', ";
//set E
string temp1 = "";
for (int i = 0; i < e -> getLength(); i++)
{
temp1 += (char) e -> getByte(i);
}
insertQuery += temp1 + "', '";
//set N
temp1 = "";
for (int i = 0; i < n -> getLength(); i++)
{
temp1 += (char) n -> getByte(i);
}
insertQuery += temp1 + "', '";
//set P
temp1 = "";
for (int i = 0; i < p -> getLength(); i++)
{
temp1 += (char) p -> getByte(i);
}
insertQuery += temp1 + "', '";
//set Q
temp1 = "";
for (int i = 0; i < q -> getLength(); i++)
{
temp1 += (char) q -> getByte(i);
}
insertQuery += temp1 + "', '";
//set D
temp1 = "";
for (int i = 0; i < d -> getLength(); i++)
{
temp1 += (char) d -> getByte(i);
}
insertQuery += temp1 + "');";
//insert Key + User data into Table
sqlite3_prepare_v2(userDB, insertQuery.c_str(), -1, &stmt1, 0);
sqlite3_step(stmt1);
sqlite3_finalize(stmt1);
我建我的查询,但我是很肯定的一部分我问题是我的getByte()函数r eturns一个无符号的字符,这个值可以是任何东西,它是ascii相当于可以说'或者,我认为搞乱了我的查询字符,我的问题是有没有办法,我可以直接写我的无符号字符到我的数据库?或者我应该创建一个函数,将他们的8位转换为7位,然后使用字符?然而,这仍然不能解决我可能是'和'或其他角色的问题。任何人有什么想法我应该在这里做什么?
我很困惑是不是我在做什么准备语句?对不起,我是新来的sql,我以前用它作为一个类,但不是用于C++而不是用crytpographic值 –