ios中Pldatabase的用法(3)
#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)的更多相关文章
- ios中Pldatabase的用法
将PLDATABASE加入到工程 下载PLDatabase 的dmg文件 将PLDatabase的framework复制到工程根目录在工程中加入该framework使用该framework进行数据库操 ...
- ios中Pldatabase的用法(4)
封装成DAO@implementation SqlHelper +(BOOL)InsertSql:(NSString *)sql paramet:(NSMutableDictionary *)parm ...
- ios中Pldatabase的用法(2)
@implementation AppGlobal static NSString* strHostName; static NSString* strVersion; static PLSqlite ...
- iOS中block的用法 以及和函数用法的区别
ios中block的用法和函数的用法大致相同 但是block的用法的灵活性更高: 不带参数的block: void ^(MyBlock)() = ^{}; 调用的时候 MyBlock(); 带参数的 ...
- iOS中Block的用法,举例,解析与底层原理(这可能是最详细的Block解析)
1. 前言 Block:带有自动变量(局部变量)的匿名函数.它是C语言的扩充功能.之所以是拓展,是因为C语言不允许存在这样匿名函数. 1.1 匿名函数 匿名函数是指不带函数名称函数.C语言中,函数是怎 ...
- ios中图片拉伸用法
- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCap ...
- iOS中的CocoaPods用法及常用命令
CocoaPods是什么? ***CocoaPods的使用场景:*** 1. 当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等.可能某个类库又用 ...
- iOS中NSScanner 的用法
NSScanner是一个类,用于在字符串中扫描指定的字符,尤其是把它们翻译/转换为数字和别的字符串.可以创建NSScanner时制定他的String属性,然后scanner会按照你的要求从头到尾扫描这 ...
- IOS中NSUserDefaults的用法(轻量级本地数据存储)
NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名.密码之类的,个人觉得使用NSUserDefaults是首选.下次再登陆的时候就可以直接从NSUserDefa ...
随机推荐
- java 反射机制--根据属性名获取属性值
1.考虑安全访问范围内的属性,没有权限访问到的属性不读取 /** * 根据属性名获取属性值 * * @param fieldName * @param object * @return */ priv ...
- OpenGL中的原子操作需要注意的地方
OpenGL中的原子操作需要注意的地方 仔细阅读看画红线的部分
- 阿里云centos安装ftp与svn过程
1.下载xshell或者secureCRT 2.登录centos或者服务器 3.安装vsftpd [root@xxx]# yum install vsftpd //安装vsftpd [root@xxx ...
- js 前加分号和感叹号的含义
;!function(){}(); ;!有什么用? 从语法上来开.Javascript中分号表示语句结束,在开头加上.可能是为了压缩的时候和别的方法切割一下,表示一个新的语句開始.所以,假设在一个单 ...
- common.js 2017
String.IsNullOrEmpty = function (v) { return !(typeof (v) === "string" && v.length ...
- ZH奶酪:LAMP环境中如何重新部署一个Yii2.0 web项目
使用Yii2.0 framework开发的项目,使用Github进行版本控制,现在要把这个项目部署到一个新的电脑/系统中: (1)安装LAMP (2)在/var/www/html目录下执行 git c ...
- Centos7中安装Python3
环境:CentOS 7 1. 安装依赖环境 # yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-dev ...
- Python3中使用Mysql的用法。
一.Python2中一般使用MySqldb来调用Mysql,但是在Python3中不支持该包,使用pymysql来代替了,用法一模一样. 二.安装: pip install pymysql 三.例子: ...
- Suse系统中不使用SFTP的话,还可以使用lrzsz。
一.安装:zypper install lrzsz 二.发送文件到远程Suse: rz 三.接收文件从远程Suse: sz ./hello.sh
- JSP与Servlet之间的关系事例说明
Servlet Servlet 没有 main 方法,不能够独立的运行,它的运行需要容器的支持,Tomcat 是最常用的 JSP/Servlet 容器.Servlet 运行在 Servlet 容器中, ...