连接SQLite数据库
- 引入SQLite库:在项目中引入SQLite库,通常是
libsqlite3.dylib
。
- 导入头文件:在需要操作数据库的文件中导入
sqlite3.h
头文件。
- 打开数据库:
sqlite3 *database;
NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *databasePath = [documentsPath stringByAppendingPathComponent:@"yourDatabaseName.db"];
if (sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
NSLog(@"成功打开数据库");
} else {
NSLog(@"无法打开数据库: %s", sqlite3_errmsg(database));
}
插入一条新记录
- 构建SQL语句:
NSString *insertSQL = @"INSERT INTO yourTableName (column1, column2) VALUES (?,?)";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, [insertSQL UTF8String], -1, &statement, NULL) == SQLITE_OK) {
// 绑定参数
sqlite3_bind_text(statement, 1, [value1 UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(statement, 2, [value2 UTF8String], -1, SQLITE_TRANSIENT);
// 执行插入
if (sqlite3_step(statement) != SQLITE_DONE) {
NSLog(@"插入失败: %s", sqlite3_errmsg(database));
}
sqlite3_finalize(statement);
} else {
NSLog(@"准备插入语句失败: %s", sqlite3_errmsg(database));
}
删除指定记录
- 构建SQL语句:
NSString *deleteSQL = @"DELETE FROM yourTableName WHERE someColumn =?";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, [deleteSQL UTF8String], -1, &statement, NULL) == SQLITE_OK) {
// 绑定参数
sqlite3_bind_text(statement, 1, [specificValue UTF8String], -1, SQLITE_TRANSIENT);
// 执行删除
if (sqlite3_step(statement) != SQLITE_DONE) {
NSLog(@"删除失败: %s", sqlite3_errmsg(database));
}
sqlite3_finalize(statement);
} else {
NSLog(@"准备删除语句失败: %s", sqlite3_errmsg(database));
}
更新指定记录
- 构建SQL语句:
NSString *updateSQL = @"UPDATE yourTableName SET column1 =? WHERE someColumn =?";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, [updateSQL UTF8String], -1, &statement, NULL) == SQLITE_OK) {
// 绑定参数
sqlite3_bind_text(statement, 1, [newValue UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(statement, 2, [specificValue UTF8String], -1, SQLITE_TRANSIENT);
// 执行更新
if (sqlite3_step(statement) != SQLITE_DONE) {
NSLog(@"更新失败: %s", sqlite3_errmsg(database));
}
sqlite3_finalize(statement);
} else {
NSLog(@"准备更新语句失败: %s", sqlite3_errmsg(database));
}
查询所有记录
- 构建SQL语句:
NSString *selectSQL = @"SELECT * FROM yourTableName";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, [selectSQL UTF8String], -1, &statement, NULL) == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
const unsigned char *column1 = sqlite3_column_text(statement, 0);
const unsigned char *column2 = sqlite3_column_text(statement, 1);
NSString *value1 = [NSString stringWithUTF8String:(const char *)column1];
NSString *value2 = [NSString stringWithUTF8String:(const char *)column2];
NSLog(@"column1: %@, column2: %@", value1, value2);
}
sqlite3_finalize(statement);
} else {
NSLog(@"准备查询语句失败: %s", sqlite3_errmsg(database));
}
关闭数据库
sqlite3_close(database);