sqlite 简单使用
来源:互联网 发布:python-kafka-logging 编辑:程序博客网 时间:2024/06/07 03:38
//// ViewController.m// sqlitedemo//// Created by lam_TT on 15-4-11.// Copyright (c) 2015年 lam_TT. All rights reserved.//#import "ViewController.h"#import <sqlite3.h>@interface ViewController () { sqlite3 *_db;}@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; [self openSQLite]; [self initButton]; }- (void)initButton { NSArray *array = [[NSArray alloc]initWithObjects:@"增",@"删",@"改",@"查", nil]; for (int i = 0; i < 4; i ++) { UIButton *button = [[UIButton alloc]init]; button.bounds = CGRectMake(0, 0, 150, 30); button.tag = 10 + i; [button setTitle:array[i] forState:UIControlStateNormal]; button.backgroundColor = [UIColor grayColor]; [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; button.center = CGPointMake(CGRectGetWidth(self.view.bounds)/2, 100 + i * 50); [self.view addSubview:button]; }}#pragma mark - 按钮点击事件- (void)buttonPressed:(UIButton *)sender { NSInteger index = sender.tag - 10; switch (index) { case 0: [self initInsertData]; break; case 1: [self initDelete]; break; case 2: [self initUpdata]; break; case 3: [self initSelect]; break; }}#pragma mark - 创建数据库- (void)openSQLite {// sqlite3 *db; //路径 NSString *string = [NSString stringWithFormat:@"%@/Documents",NSHomeDirectory()]; NSString *fileName = [string stringByAppendingString:@"/students.sqlite"]; //OC-C const char *cfileName = fileName.UTF8String; //打开数据库,没有就自动创建 int result = sqlite3_open(cfileName, &_db); if (result == SQLITE_OK) { NSLog(@"成功打开数据库"); }else { NSLog(@"打开数据库失败"); } //可用sqliteManger查看 #pragma mark - 创建表 const char *sql="CREATE TABLE IF NOT EXISTS t_students (id integer PRIMARY KEY AUTOINCREMENT,name text NOT NULL,age integer NOT NULL);"; char *errmsg = NULL; //参数:第一个参数为数据库的句柄(db),第二个参数为sql语句,第三个参数为回调参数,是一个指向函数的指针,如果把callback前面的*改成^则就是一个block代码段,第四个参数可以写NULL,第五个参数为错误信息,用以代码调试。 result = sqlite3_exec(_db, sql, NULL, NULL, &errmsg); if (result == SQLITE_OK) { NSLog(@"创建表成功"); }else { printf("创表失败---%s----%s---%d",errmsg,__FILE__,__LINE__); }}#pragma mark - 插入数据- (void)initInsertData { for (int i = 0; i < 20; i ++) { //1.拼接sql语句 NSString *name = [NSString stringWithFormat:@"数据--%d",arc4random_uniform(100)]; int age = arc4random_uniform(20) + 10; NSString *sql=[NSString stringWithFormat:@"INSERT INTO t_students (name,age) VALUES ('%@',%d);",name,age]; //2.执行sql语句 char *errmsg = NULL; sqlite3_exec(_db, sql.UTF8String, NULL, NULL, &errmsg); if (errmsg) { //如果有错误信息 NSLog(@"插入数据失败-- %s",errmsg); }else { NSLog(@"插入数据成功"); } } }#pragma mark - 选择(select)查询操作- (void)initSelect { //从这个表里面查找年龄小于20得数据 const char *sql="SELECT id,name,age FROM t_students WHERE age<20;"; sqlite3_stmt *stmt = NULL; //进行查询前得准备工作 if (sqlite3_prepare_v2(_db, sql, -1, &stmt, NULL) == SQLITE_OK) { //SQL语句没有问题 NSLog(@"SQL语句没有问题"); //每调用一次sqlite_step函数,stmt就会指向下一条记录 while (sqlite3_step(stmt) == SQLITE_ROW) { //取出数据 //(1)取出第0列字段得值(int类型得值) int ID = sqlite3_column_int(stmt, 0); //(2)取出第2列字段得值(text类型得值) const unsigned char *name = sqlite3_column_text(stmt, 1); //(3)取出第2列字段得值 int age = sqlite3_column_int(stmt, 2); printf("%d %s %d\n",ID,name,age); } }else { NSLog(@"查询语句有问题,或者没有数据"); } }#pragma mark - 删除数据- (void)initDelete { const char *sql = "delete from t_students"; char *errmsg = NULL; sqlite3_exec(_db, sql, NULL, NULL, &errmsg); if (errmsg) { NSLog(@"删除失败"); }else { NSLog(@"删除成功"); }}- (void)initUpdata { const char *sql = "update t_students set name = '小明' , age = 16 ;"; char *errmsg = NULL; sqlite3_exec(_db, sql, NULL, NULL, &errmsg); if (errmsg) { NSLog(@"修改失败"); }else { NSLog(@"修改成功"); }}@end
注:要导入 libsqlite3.dylib
0 1
- 【SQLite】SQLite的简单使用
- SQLite的简单使用
- sqlite 简单使用
- ios简单sqlite使用
- ios简单sqlite使用
- ios简单sqlite使用
- SQLITE简单使用
- ios简单sqlite使用
- iOS-简单sqlite使用
- ios简单sqlite使用
- SQLITE简单使用
- sqlite 简单使用
- sqlite简单使用
- android Sqlite简单使用
- SQLite、Cursor简单使用
- 简单SQLite的使用
- SQLite简单使用
- SQLite数据库简单使用
- LeetCode - Recover Binary Search Tree
- C/C++_地址,存储区
- arcgis10.3安装方法说明
- Java数组技巧
- java数组的最大长度是多少?
- sqlite 简单使用
- 浮点数和十六进制之间的相互转换
- UVA - 101 The Blocks Problem(STL,模拟)
- ruby on rails 局部刷新
- Activity生命周期
- Fit background image to div
- Raspberry Pi网线直连Ubuntu(ssh, vnc)
- Android中资源文件的使用
- 【三水哥】HTML中数字输入框内输入字母或者特殊符号,获取输入框内的值为""