c ++中的sqlite3不承认我的主键

时间:2017-06-07 11:11:16

标签: c++ database sqlite

我目前正在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;
}

1 个答案:

答案 0 :(得分:1)

该表没有主键。

第一列的名称为username,类型为TEXT primarykey

要获取主键,请将其拼写为PRIMARY KEY