首页 文章

cpp - sqlite3如何正确绑定`char`类型并从数据库中读取它

提问于
浏览
1

如何绑定简单的 char char_type; 并从sqlite3数据库中读取它?

char char_type;
 char_type = 'V';
 sqlite3_bind_text(stmt, 1, char_type); // error: invalid conversion from 'char' to 'const char*'

/usr/local/include/sqlite3.h:3430:错误:函数'int sqlite3_bind_text(sqlite3_stmt *,int,const char *,int,void()(void))'的参数太少

// read it back?
 char_type = reinterpret_cast<char*> ( sqlite3_column_text(stmt, 1) );

1 回答

  • 3

    SQLite没有char类型,只有字符串类型 . 所以你必须让它看起来像一个字符串:

    // bind
    sqlite3_bind_text(stmt, /* column */ 1, &char_type, 1, SQLITE_TRANSIENT);
    
    // read
    char_type = sqlite3_column_text(stmt, 1)[0];
    

    或者,如果您知道所有数据总是一个字符,那么使用整数几乎肯定更有效,只需将其转换为进出的方式:

    // bind
    sqlite3_bind_int(stmt, /* column */ 1, (int)char_type);
    
    // read
    char_type = (char)sqlite3_column_int(stmt, 1);
    

相关问题