SQLite在CPP中从'char'到'const char *'[-fpermissive]的无效转换

时间:2017-03-19 19:50:20

标签: c sqlite

需要按用户提供的新值(名称和地址)更新数据库。查询中的错误是:

  1. 错误:从'char'到'const char *'的无效转换[-fpermissive] sqlite3_bind_text(res,2,* c2)

    1. 错误:函数'int sqlite3_bind_text(sqlite3_stmt *,int,const char *,int,void()(void ))'的参数太少      sqlite3_bind_text(res,2,* c2)
  2. 我的代码是:

            const char *c1 = updatedName.c_str();
            const char *c2 = updatedAdd.c_str();
    
    char *sql = ("UPDATE RECORDS SET NAME = ? AND ADDRESS = ? WHERE ACCOUNT_No = ?");
            rc = sqlite3_prepare_v2(db, sql, -1, &res, 0);
            sqlite3_bind_text(res, 1, *c1);
            sqlite3_bind_text(res, 2, *c2);
            sqlite3_bind_int(res, 3, acc);
            rc = sqlite3_step(res);
            sqlite3_finalize(res);
    

1 个答案:

答案 0 :(得分:0)

sqlite3_bind_text()想要一个指向整个字符串的指针,而不仅仅是第一个字符。 (您需要了解C指针和字符串(字符数组)的工作原理。)

sqlite3_bind_text() documentation告诉您使用五个参数:

sqlite3_bind_text(res, 1, updatedName.c_str(), -1, SQLITE_TRANSIENT);