我目前正在sqlite3中构建一个数据库项目。 我已经创建了一个插入表
的函数t_users(username TEXT primarykey not null, password TEXT not null, email TEXT not null)
新行。 问题是函数不确认我的主键,它允许我添加两行具有相同的用户名。 这是我的主要内容:
#include "Database.h"
int main()
{
DataBase db;
bool answer = db.addNewUser("user4", "1234", "user4@gmail.com");
return 0;
}
这是我的addNewUser函数:
bool DataBase::addNewUser(string username, string password, string email)
{
//not a really relevant part:
username.insert(0, "'");
username += "'";
password.insert(0, "'");
password += "'";
email.insert(0, "'");
email += "'";
//this is probably the relevant part:
char* zErrMsg;
int rv;
rv = sqlite3_exec(_db, ("INSERT INTO t_users(username, password, email)
VALUES(" + username + ',' + password + ',' + email + ");").c_str(), NULL, 0, &zErrMsg);
if (rv != SQLITE3_OK) //checking for errors that might have occured
{
return false;
}
return true;
}
答案 0 :(得分:1)
该表没有主键。
第一列的名称为username
,类型为TEXT primarykey
。
要获取主键,请将其拼写为PRIMARY KEY
。