SQlite_3
来源:互联网 发布:linux nvidia 驱动安装 编辑:程序博客网 时间:2024/06/05 20:50
简单易懂的demo// 1. UserDB.h#import <Foundation/Foundation.h>@interface UserDB : NSObject- (void)createTable;- (void)insertTable;- (void)selectTable;- (void)deleteTable;@end// UserDB.m#import "UserDB.h"#import <sqlite3.h>@implementation UserDB- (void)createTable { sqlite3 *sqlite = nil; NSString *filePath = [self localPath]; // 1- 打开数据库 int result = sqlite3_open([filePath UTF8String], &sqlite); if (result != SQLITE_OK) { NSLog(@"打开数据库失败"); return; } // 2- 创建表的SQL语句 NSString *sql = @"CREATE TABLE IF NOT EXISTS User (username TEXT primary key,password TEXT,email TEXT)"; // 3- 执行SQL语句 char *error = nil; result = sqlite3_exec(sqlite, [sql UTF8String], NULL, NULL, &error); if (result != SQLITE_OK) { NSLog(@"创建表失败"); return; } // 4- 关闭数据库 sqlite3_close(sqlite); NSLog(@"创建表成功"); }- (void)insertTable { sqlite3 *sqlite = nil; NSString *filePath = [self localPath]; // 1- 打开数据库 int result = sqlite3_open([filePath UTF8String], &sqlite); if (result != SQLITE_OK) { NSLog(@"打开数据库失败"); return; } // 2- 创建数据库语句 (占位) NSString *sql = @"INSERT INTO User(username,password,email) VALUES (?,?,?)"; // 编译 sqlite3_stmt *stmt = nil; result = sqlite3_prepare_v2(sqlite, [sql UTF8String], -1, &stmt, NULL); if (result != SQLITE_OK) { NSLog(@"准备失败"); return; } // 3- 填充和填充数据 NSString *username = @"Charles"; NSString *password = @"123"; NSString *email = @"75517668@qq.com"; sqlite3_bind_text(stmt, 1, [username UTF8String], -1, NULL); sqlite3_bind_text(stmt, 2, [password UTF8String], -1, NULL); sqlite3_bind_text(stmt, 3, [email UTF8String], -1, NULL); // 4- 执行SQL语句 result = sqlite3_step(stmt); if (result == SQLITE_ERROR || result == SQLITE_MISUSE) { NSLog(@"执行SQL语句失败"); return; } // 5- 关闭数据库句柄 和 关闭数据库 sqlite3_finalize(stmt); sqlite3_close(sqlite); NSLog(@"数据插入成功"); }- (void)selectTable { sqlite3 *sqlite = nil; NSString *filePath = [self localPath]; // 1- 打开数据库 int result = sqlite3_open([filePath UTF8String], &sqlite); if (result != SQLITE_OK) { NSLog(@"数据库打开失败"); return; } // 2- 创建SQL语句 NSString *sql = @"select username,password,email from user where username=?"; // 3- 编译 和 绑定 sqlite3_stmt *stmt = nil; sqlite3_prepare_v2(sqlite, [sql UTF8String], -1, &stmt, NULL); NSString *username = @"Charles"; sqlite3_bind_text(stmt, 1, [username UTF8String], -1, NULL); result = sqlite3_step(stmt); if (result == SQLITE_ERROR || result == SQLITE_MISUSE) { NSLog(@"执行SQL语句失败"); return ; } // 4- 返回遍历的每一行 while (result == SQLITE_ROW) { char *username = (char *)sqlite3_column_text(stmt, 0); char *password = (char *)sqlite3_column_text(stmt, 1); char *email = (char *)sqlite3_column_text(stmt, 2); NSString *uname = [self encoding:username]; NSString *pword = [self encoding:password]; NSString *mail = [self encoding:email]; NSLog(@"用户名:%@ 密码:%@ 邮箱:%@",uname,pword,mail); result = sqlite3_step(stmt); } // 5- 关闭句柄 和 关闭数据库 sqlite3_finalize(stmt); sqlite3_close(sqlite); }- (void)deleteTable { sqlite3 *sqlite = nil; // 1- 打开数据库 NSString *filePath = [self localPath]; int result = sqlite3_open([filePath UTF8String], &sqlite); if (result != SQLITE_OK) { NSLog(@"打开数据库失败"); return ; } // 2-SQL语句 NSString *sql = @"delete from user where username=?"; sqlite3_stmt *stmt = nil; // 3- 准备和绑定 sqlite3_prepare_v2(sqlite, [sql UTF8String], -1, &stmt, NULL); NSString *username = @"Charles"; sqlite3_bind_text(stmt, 1, [username UTF8String], -1, NULL); // 4-执行句柄 result = sqlite3_step(stmt); if (result == SQLITE_ERROR || result == SQLITE_MISUSE) { NSLog(@"删除失败"); return ; } // 5-关闭句柄 和 关闭数据库 sqlite3_finalize(stmt); sqlite3_close(sqlite); }- (NSString *)encoding:(char *)cString { return [NSString stringWithCString:cString encoding:NSUTF8StringEncoding];}- (NSString *)localPath { // 创建路径 NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; filePath = [filePath stringByAppendingPathComponent:@"data.sqlite"]; return filePath;}@end
0 0
- SQlite_3
- beego:orm使用sqlite_3
- WIN7+VS2010下配置编译SQLite_3.8.6
- iOS中各种动画分类
- Nginx Rewrite规则初探
- HDU 5480(前缀和||树状数组)
- hdu 5455__Fang Fang
- iBatis的增、删、查、改(执行通过)
- SQlite_3
- 安卓使用原生登录替代网页登录思路
- XML解析--NSXMLParser和TouchXML
- listview中嵌套gridview
- Effective Java 2nd 读书笔记(思维导图)
- 黄半仙算命系统1
- Java里的堆(heap)栈(stack)和方法区(method)(精华帖,多读读)
- Android基础入门教程——2.5.3 AlertDialog(对话框)详解
- hdu 5458 Stability(树链剖分+强连通缩点+线段树)