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 ...
随机推荐
- Cesium原理篇:3D Tiles(1)渲染调度【转】
Cesium在2016年3月份左右推出3D Tiles数据规范,在glTF基础上提供了LOD能力,定位就是Web环境下海量三维模型数据.虽然目前3D Tiles还是Beta阶段,有不少硬伤,但3D T ...
- MultipleRegularExpressionAttribute MVC中扩展自定义验证规则
好久都没有写博客,最近工作中没有什么可写的,公司的项目是以业务为重,技术含量实在不咋的.这次sprint中有一个要求就是password必须一些规则,比如给你一些正则表达式必须满足几个,直接看效果吧 ...
- js中document.write的那点事
document.write()方法可以用在两个方面:页面载入过程中用实时脚本创建页面内容,以及用延时脚本创建本窗口或新窗口的内容.该方法需要一个字符串参数,它是写到窗口或框架中的HTML内容.这些字 ...
- android api doc 一
Manifest.permission 用于记录相应权限类 ACCESS_CHECKIN_PROPERTIES 允许在登入数据库的时候读写其中的属性表,并上传改变的值 ACCESS_COARSE_LO ...
- python2.7 调用 .net的webservice asmx
首先安装pip install suds 或下载:https://pypi.org/project/suds-jurko/0.6/#files 这个是最新版本 由于不支持python3.6, 所以只能 ...
- Android -- Canvas java.lang.UnsupportedOperationException
干货 java.lang.UnsupportedOperationException at android.view.GLES20Canvas.clipPath(GLES20Canvas.java:2 ...
- Redis实战总结-Redis的高可用性
在之前的博客<Redis实战总结-配置.持久化.复制>给出了一种Redis主从复制机制,简单地实现了Redis高可用.然后,如果Master服务器宕机,会导致整个Redis瘫痪,这种方式的 ...
- 一家VC支持企业的发展轨迹——了解每次融资后股权和期权的变化,以及股份是如何被稀释的【转载】
来源:ReachVc 该文是 ReachVC 上一篇文章,是某个投资公司副总裁的独立博客,文章写得不错.如果你是一个不太了解融资的创业者,那么本文将对你很有用.通过武林外传同福客栈的例子,了解每次融资 ...
- Spring AspectJ切入点语法详解
1.Spring AOP支持的AspectJ切入点指示符 切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指 ...
- 生日日期联动选择birthday.js
实例下载