#import "ViewController.h"

@interface ViewController ()
@property(nonatomic,retain)PLSqliteDatabase *db;
@end @implementation ViewController #pragma mark -生命周期方法
-(void)dealloc{
self.db=nil;
[super dealloc];
} - (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self OpenDb];
} - (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} #pragma mark -事件
- (IBAction)createTable:(id)sender {
[self createTable];
} - (IBAction)ExtistTable:(id)sender {
} - (IBAction)Insert:(id)sender {
[self InsertData];
} - (IBAction)update:(id)sender {
[self UpdateData];
} - (IBAction)delete1:(id)sender {
[self deletedata];
}
- (IBAction)select1:(id)sender {
[self selectdata1];
} #pragma mark--数据库操作
-(void)OpenDb{
NSString *path= [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
path=[path stringByAppendingPathComponent:@"test.db"];
//open db
PLSqliteDatabase *sqldb=[[PLSqliteDatabase alloc] initWithPath:path];//没有数据库,会创建一个的 if(![sqldb open]){
NSLog(@"没有打开数据库"); }
self.db=sqldb; [sqldb release];
} -(void)createTable{
if (![self.db tableExists:@"TEST"]) {
if(![self.db executeUpdate:@"CREATE TABLE TEST (id integer primary key autoincrement,name text,age integer)"]){
NSLog(@"create table faild");
}
}
else{
NSLog(@"表已经存在");
} } -(void)InsertData{
NSString *sql=@"INSERT INTO TEST(name,age) values(?,?)"; if([self.db executeUpdate:sql,@"gcb",@]){//注意参数必须是oc对象
NSLog(@"insert success");
}
else{
NSLog(@"insert failed");
} } -(void)UpdateData{
NSString *sql=@"UPDATE TEST SET name=?,age=? where id=?";
if([self.db executeUpdate:sql,@"ios",@,@]){//注意参数必须是oc对象
NSLog(@"update success");
}
else{
NSLog(@"updata failed");
}
} -(void)selectdata{
NSString *sql=@"SELECT id,name,age FROM TEST WHERE id=?";
id<PLResultSet> result=[self.db executeQuery:sql,@];
while ([result next]) {
int pid=[result intForColumn:@"id"];
NSString *name=[result stringForColumn:@"name"];
int32_t age=[result intForColumn:@"age"];
NSLog(@"id=%zi,name=%@,age=%zi",pid,name,age);
}
} -(void)selectdata1{
// NSString *sql=@"SELECT id,name,age FROM TEST WHERE (id like '%%%@%%' OR age like '%%@%%' ";
NSString *sql=[NSString stringWithFormat:@"SELECT id,name,age FROM TEST WHERE (id like'%%%@%%' OR age like '%%%@%%')",@,@]; id<PLResultSet> result=[self.db executeQuery:sql];
while ([result next]) {
int pid=[result intForColumn:@"id"];
NSString *name=[result stringForColumn:@"name"];
int32_t age=[result intForColumn:@"age"];
NSLog(@"id=%zi,name=%@,age=%zi",pid,name,age);
}
} -(void)deletedata{
NSString *sql=@"DELETE FROM TEST WHERE id=?";
if([self.db executeUpdate:sql,@]){
NSLog(@"delete success");
}
else{
NSLog(@"delete failed");
}
}

插入的另一种方法(如果是要封装,可以考虑下面)

-(void)InsertData1{
NSString *sql=@"INSERT INTO TEST(name,age) values(:name,:age)"; id<PLPreparedStatement> stm=[self.db prepareStatement:sql];
NSMutableDictionary *dic=[NSMutableDictionary dictionary];
[dic setObject:@"tt" forKey:@"name"];
[dic setObject:@ forKey:@"age"];
[stm bindParameterDictionary:dic]; if([stm executeUpdate]){
NSLog(@"ss");
}
-(void) selectdate2{
NSString *sql=@"SELECT id,name,age FROM TEST WHERE id=:id";
id<PLPreparedStatement> stmp=[self.db prepareStatement:sql];
NSMutableDictionary *dic=[NSMutableDictionary dictionary];
[dic setObject:@ forKey:@"id"];
[stmp bindParameterDictionary:dic];
id<PLResultSet> result=[stmp executeQuery];
while ([result next]) {
int pid=[result intForColumn:@"id"];
NSString *name=[result stringForColumn:@"name"];
int age=[result intForColumn:@"age"];
NSLog(@"name=%@,age=%zi,id=%zi",name,age,pid);
}
}

ios中Pldatabase的用法(3)的更多相关文章

  1. ios中Pldatabase的用法

    将PLDATABASE加入到工程 下载PLDatabase 的dmg文件 将PLDatabase的framework复制到工程根目录在工程中加入该framework使用该framework进行数据库操 ...

  2. ios中Pldatabase的用法(4)

    封装成DAO@implementation SqlHelper +(BOOL)InsertSql:(NSString *)sql paramet:(NSMutableDictionary *)parm ...

  3. ios中Pldatabase的用法(2)

    @implementation AppGlobal static NSString* strHostName; static NSString* strVersion; static PLSqlite ...

  4. iOS中block的用法 以及和函数用法的区别

    ios中block的用法和函数的用法大致相同 但是block的用法的灵活性更高: 不带参数的block: void ^(MyBlock)() = ^{}; 调用的时候  MyBlock(); 带参数的 ...

  5. iOS中Block的用法,举例,解析与底层原理(这可能是最详细的Block解析)

    1. 前言 Block:带有自动变量(局部变量)的匿名函数.它是C语言的扩充功能.之所以是拓展,是因为C语言不允许存在这样匿名函数. 1.1 匿名函数 匿名函数是指不带函数名称函数.C语言中,函数是怎 ...

  6. ios中图片拉伸用法

    - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCap ...

  7. iOS中的CocoaPods用法及常用命令

     CocoaPods是什么? ***CocoaPods的使用场景:*** 1. 当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等.可能某个类库又用 ...

  8. iOS中NSScanner 的用法

    NSScanner是一个类,用于在字符串中扫描指定的字符,尤其是把它们翻译/转换为数字和别的字符串.可以创建NSScanner时制定他的String属性,然后scanner会按照你的要求从头到尾扫描这 ...

  9. IOS中NSUserDefaults的用法(轻量级本地数据存储)

    NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名.密码之类的,个人觉得使用NSUserDefaults是首选.下次再登陆的时候就可以直接从NSUserDefa ...

随机推荐

  1. SharePoint2013 以其他用户登录和修改AD域用户密码 功能

    sharepoint默认是没有修改AD密码 和切换 用户的功能,这里我用future的方式来实现. 部署wsp前: 部署后: 点击以其他用户身份登录 点击修改用户密码: 这里的扩展才菜单我们用Cust ...

  2. Downloading files from a server to client, using ASP.Net, when file size is too big for MemoryStream using Generic Handlers (ashx)

    Currently, I was trying to write an ASP.Net application that involved a user clicking a ASP.Net butt ...

  3. JQuery Ajax 在asp.net中使用总结

    自从有了JQuery,Ajax的使用变的越来越方便了,但是使用中还是会或多或少的出现一些让人短时间内痛苦的问题.本文暂时总结一些在使用JQuery Ajax中应该注意的问题,如有不恰当或者不完善的地方 ...

  4. impala-shell常用命令

    1.查看相关内网IP: cat /etc/hosts 2.进入impala: impala-shell; 3.显示数据库,数据表 show databases: show tables; 4.查看表结 ...

  5. hadoop2.2.0 centos 编译安装详解

    http://blog.csdn.net/w13770269691/article/details/16883663 废话不讲,直切正题. 搭建环境:Centos x 6.4 64bit 1.安装JD ...

  6. php5.6 的interactive模式

    1. 发现运行php 的interactive shell 的时候,不能输入一行执行一行,而要 输入完一整段内容,再按  ctrl + d才能执行这段内容. 原因是,没安装 readline这个模块, ...

  7. Spark Strcutured Streaming中使用Dataset的groupBy agg 与 join 示例(java api)

    Dataset的groupBy agg示例 Dataset<Row> resultDs = dsParsed .groupBy("enodeb_id", "e ...

  8. springboot 中使用事务

    直接在service 层的方法上加上@Transactional 注解就ok. 注意事项: 1.Spring 基于注解的声明式事物 @Transactional 默认情况下只会对运行期异常(java. ...

  9. ESXI 6.5 从载到安装

    下载ESXI 访问官网 https://www.vmware.com 到download,选择vsphere 下载esxi https://my.vmware.com/en/group/vmware/ ...

  10. Android 原生 Android ActionBar

    本文内容 关于 ActionBar 必要条件 项目结构 环境 演示一:Action Bar 显示隐藏 演示二:Action Item 显示菜单选项 演示三:Action Home 启用"返回 ...