sqlite的方法.docVIP

  • 2
  • 0
  • 约7.36千字
  • 约 13页
  • 2016-10-19 发布于河南
  • 举报
sqlite的方法

sqlite 的方法 sqlite3 ? ? ? ? ?*db, 数据库句柄,跟文件句柄FILE很类似 sqlite3_stmt ? ? ?*stmt, 这个相当于ODBC的Command对象,用于保存编译好的SQL语句 sqlite3_open(), ? 打开数据库,没有数据库时创建。 sqlite3_exec(), ? 执行非查询的sql语句 Sqlite3_step(), 在调用sqlite3_prepare后,使用这个函数在记录集中移动。 Sqlite3_close(), 关闭数据库文件 还有一系列的函数,用于从记录集字段中获取数据,如 sqlite3_column_text(), 取text类型的数据。 sqlite3_column_blob(),取blob类型的数据 sqlite3_column_int(), 取int类型的数据 (1)打开或者创建数据库 sqlite3 *database; int result = sqlite3_open(/path/databaseFile, database); 如果/path/databaseFile不存在,则创建它,否则打开它。如果result的值是SQLITE_OK,则表明我们的操作成功。 注意上述语句中数据库文件的地址字符串前面没有@字符,它是一个C字符串。将NSString字符串转成C字符串的方法是: const char *cString = [nsString UTF8String]; (2)关闭数据库 sqlite3_close(database); (3)创建一个表格 char *errorMsg; const char *createSQL = CREATE TABLE IF NOT EXISTS PEOPLE (ID INTEGER PRIMARY KEY AUTOINCREMENT, FIELD_DATA TEXT); int result = sqlite3_exec(database, createSQL, NULL, NULL, errorMsg); 执行之后,如果result的值是SQLITE_OK,则表明执行成功;否则,错误信息存储在errorMsg中。 sqlite3_exec这个方法可以执行那些没有返回结果的操作,例如创建、插入、删除等。 (4)查询操作 NSString *query = @SELECT ID, FIELD_DATA FROM FIELDS ORDER BY ROW; sqlite3_stmt *statement; int result = sqlite3_prepare_v2(database, [query UTF8String], -1, statement, nil); 如果result的值是SQLITE_OK,则表明准备好statement,接下来执行查询: while (sqlite3_step(statement) == SQLITE_ROW) { int rowNum = sqlite3_column_int(statement, 0); char *rowData = (char *)sqlite3_column_text(statement, 1); NSString *fieldValue = [[NSString alloc] initWithUTF8String:rowData]; // Do something with the data here } sqlite3_finalize(statement); 使用过其他数据库的话应该很好理解这段语句,这个就是依次将每行的数据存在statement中,然后根据每行的字段取出数据。 (5)使用约束变量 实际操作时经常使用叫做约束变量的东西来构造SQL字符串,从而进行插入、查询或者删除等。 例如,要执行带两个约束变量的插入操作,第一个变量是int类型,第二个是C字符串: char *sql = insert into oneTable values (?, ?);; sqlite3_stmt *stmt; if (sqlite3_prepare_v2(database, sql, -1, stmt, nil) == SQLITE_OK) { sqlite3_bind_int(stmt, 1, 235); sqlite3_bind_text(stmt, 2, valueString, -1, NULL); } if (sqlite3_step(stmt) != SQLITE_DONE) NSLog(@Something is Wrong!); sqlite3_finalize(stmt

文档评论(0)

1亿VIP精品文档

相关文档