SQLite第一天:通过代码对本地的 SQLite 进行一系列操作

SQLiteManager 数据层---> 包括: library(用户信息)tmp(临时文件[用户退出时不定时清除])Document

1.Documents:

只有用户生成的文件、其他数据及其他程序不能重新创建的文件,应该保存在<Application_Home>/Documents 目录下面,并将通过iCloud自动备份。

2.Library:

可以重新下载或者重新生成的数据应该保存在 <Application_Home>/Library/Caches 目录下面。举个例子,比如杂志、新闻、地图应用使用的数据库缓存文件和可下载内容应该保存到这个文件夹。

3.tmp:

只是临时使用的数据应该保存到 <Application_Home>/tmp 文件夹。尽管 iCloud 不会备份这些文件,但在应用在使用完这些数据之后要注意随时删除,避免占用用户设备的空间

引用libsqlite3.tbd资源文件和"FMDB 文件夹"

然后添加 SQLiteManager

在SQLiteManager. h 文件中插入单例和BOOL 类型更新数据库的方法和(数组类型的获得SQL的方法)将得到的SQL放入数组中

 1 +(instancetype)share;
 2 /**
 3  *  更新数据库数据
 4  *
 5  *  @param sql sql 语句
 6  *
 7  *  @return 返回成功或者失败
 8  */
 9 -(BOOL)run:(NSString *)sql;
10 /**
11  *  查找数据库数据
12  *
13  *  @param sql 查找的sql 语句
14  *
15  *  @return 返回根据传进来的 sql 语句查询的结果
16  */
17 -(NSArray *)getData:(NSString *)sql;

然后在SQLiteManager.m 文件中实现各个方法

首先引入头文件#import "FMDatabase"

添加一个 FMDatabase属性 fmDB, 实现单例方法, init初始化 方法并添加一个 creatDB的方法

在creatDB 方法中实现如下几步:

1.指定 NSHomeDirectory 路径

2.初始化 fmDB, 并且在创建的时候指定数据库路径

3.打开数据库{执行数据库操作,如果有 Person, 则跳过,没有则创建}

然后实现更新数据库操作和查找数据库数据操作,代码如下:

#import "SQLiteManager.h"
#import "FMDatabase.h"

@interface SQLiteManager ()

@property (nonatomic,strong)FMDatabase *fmdb;

@end

@implementation SQLiteManager

+(instancetype)share
{
    static SQLiteManager *cm  = nil;
    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{
        cm = [[SQLiteManager alloc] init];
    });
    return cm;
}

- (instancetype)init
{
    if (self = [super init]) {
        [self creatDB];
    }
    return self;
}

-(void)creatDB
{
    //1.指定 NSHomeDiretory 路径
    NSString *path = [NSString stringWithFormat:@"%@/Documents/app.db",NSHomeDirectory()];
    NSLog(@"path = %@",path);
    //2.初始化 FMDB, 并且在创建的时候指定数据库路径
    self.fmdb = [[FMDatabase alloc] initWithPath:path];
    //3.打开数据库
    if ([self.fmdb open]) {
        //4.执行数据库操作,如果当前有 Person, 则跳过,没有则创建
        NSString *sql = @"CREATE TABLE \"Person\" (\"person_id\" INTEGER PRIMARY KEY AUTOINCREMENT, \"name\" TEXT, \"tel\" TEXT, \"age\" TEXT)";
        [self run:sql];
    }else
    {
        NSLog(@"打开数据库失败!");
        return;
    }
}
-(BOOL)run:(NSString *)sql
{
   return  [self.fmdb executeUpdate:sql];
}

-(NSArray *)getData:(NSString *)sql
{
    FMResultSet *result = [self.fmdb executeQuery:sql];
    NSMutableArray *mArr = [NSMutableArray arrayWithCapacity:0];
    while ([result next]) {
        NSDictionary *dic = [result resultDictionary];//遍历
        [mArr addObject:dic];
    }
    return [NSArray arrayWithArray:mArr];

    return nil;
}

@end

在 ViewController 文件中增加添加和查询操作,先添加"SQLiteManager"头文件

添加 SQLiteManager 属性

在 VD 方法中添加 self.sqlManager = [SQLiteManager share];

实现添加方法和查询方法

 1 #import "ViewController.h"
 2 #import "SQLiteManager.h"
 3 @interface ViewController ()
 4 @property (nonatomic,strong)SQLiteManager *sqlManager;
 5 @end
 6
 7 @implementation ViewController
 8
 9 - (void)viewDidLoad {
10     [super viewDidLoad];
11     // Do any additional setup after loading the view, typically from a nib.
12     self.sqlManager = [SQLiteManager share];
13 }
14 #pragma mark 添加
15 - (IBAction)tapAddBtn:(id)sender {
16     NSString *sql = @"insert into person(name,age,tel) values(‘mark‘,‘18‘,‘119‘)";
17     if ([self.sqlManager run:sql]) {
18         NSLog(@"添加成功");
19     }
20     else
21     {
22         NSLog(@"添加失败");
23     }
24     [self.sqlManager run:sql];
25 }
26 #pragma mark 查询
27 - (IBAction)tapSearchBtn:(id)sender {
28     NSString *sql = @"select * from person where name = ‘mark‘";
29     [self.sqlManager getData:sql];
30     NSArray *result = [self.sqlManager getData:sql];
31     NSLog(@"查询结果 result = %@",result);
32 }
33
34 - (void)didReceiveMemoryWarning {
35     [super didReceiveMemoryWarning];
36     // Dispose of any resources that can be recreated.
37 }
38
39 @end

时间: 2024-10-10 21:33:10

SQLite第一天:通过代码对本地的 SQLite 进行一系列操作的相关文章

android listview级联三菜单选择地区,本地数据库sqlite级联地区,item选中不变色

前言:因为找了N多网上的资源都没有好的解决方案,别人都是只给思路没给具体源码,真TMD纠结,干嘛求别人,自己动手才是真,最痛恨那些所谓大牛的作风,给了点点代码就让别人去想,你让我们这种小白情何于堪!!!!!!此例是基于listview来实现本地sqlite实现的! 二话不说,程序猿求的是有图有真相有源码!大家下载后有什么问题可以找到本人:QQ508181017 核心代码如下 1.数据库操作类 package com.icq.demo.db; import java.util.ArrayList;

通过Webstorm上传代码到Github、更新代码后同步到github及克隆github代码到本地的方法

导读: Github做为IT爱好者分享代码的一个知名的平台,广受大家喜欢,那么我们平时该怎么将自己写的代码上传到github上面保存并且提供给其他人参考? 我想方法不外乎如下几个: 1.直接在github网页上面上传代码(没试过) : 2.利用git工具,下载git然后利用命令行工具上传代码,这种方式需要更多的命令行知识,对于不熟悉命令行工具的小伙伴来说是个很头疼的事: 3.利用开发工具Webstorm来进行类似图形化方式上传代码,这种方法简单容易,也是本文重点要讲述的! 问题1:那么如何利用W

JavaScript在线运行html代码,保存html代码到本地

在网页中看到一些html代码却不知这样的代码运行起来是什么样子?觉得一些模板代码不错还要手动复制,新建文件,粘贴嫌麻烦?下面的js方法可以帮你解决这些问题. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JavaScript在线运行html代码,保存html代码到本地</title> </head> <body> &l

quick cocos2dx 游戏引擎lua调用oc代码实现本地推送

我在博客标题为“ios如何实现本地推送,兼容ios8“http://www.cnblogs.com/laoguigame/p/4522474.html的博文中介绍了通过oc代码实现本地推送的方法.现在介绍在lua中调用咱们之前写的oc方法接口来实现在lua层实现推送的功能,主要基于quick cocos2dx V3.3版本的引擎来实现.在quick中的luaoc.lua文件中实现了luaoc.callStaticMethod(className, methodName, args)接口,可以看出

ubuntu 搭建samba服务器&amp;挂载(mount)代码到本地

一.搭建samba服务器 1.下载: sudo apt-get install samba samba-common 2.创建共享文件夹MyShare: mkdir /home/user/MyShare chmod 777 /home/ user/MyShare 3.备份config文件(防止改错或丢失): sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup 4.进入config文件: sudo gedit /etc/samba/smb.

SQLite第一课 sqlite3.exe使用教程

1).open 打开数据库 例子: sqlite> .open test.db 注意:>后面有点 2) .tables 查看数据库包含的表名 例子: sqlite> .tables 注意:>后面有点 3) .schema 查看数据库中所有的表的结构 例子: sqlite> .schema students 注意:>后面有点 4) 执行sql语句 例子: sqlite> select * from students where StudentID = 3 ; 注意:

SQLite学习手册(实例代码&lt;一&gt;)

一.获取表的Schema信息:       1). 动态创建表.     2). 根据sqlite3提供的API,获取表字段的信息,如字段数量以及每个字段的类型.     3). 删除该表.     见以下代码及关键性注释:  1 #include <sqlite3.h>  2 #include <string>  3  4 using namespace std;  5  6 void doTest()  7 {  8     sqlite3* conn = NULL;  9  

第一天的代码练习_基础

//第一天的内容包括JAVA环境配置,数据类型的讲解,数据类型的运算.在环境配置中,要求在 cmd命令窗口下,在任何文件目录下,输入javac.exe,都能够出现正确的显示结果--就需要在环境变量 中设置 public class Test{      public static void main(String[] args){        //不能使用保留字.关键字       /*       变量定义的格式 :数据类型 变量名=初始化值       变量必须先赋值,后使用       

轻量级本地数据库SQLite在WinRT的使用

开发环境:Windows 8.1 开发工具:Visual Studio Express 2013 for Windows SQLite数据库介绍 1.SQLite是一款轻型的嵌入式数据库,使用C++开发,使用非常广泛 2.SQLite是一款跨平台的数据库,支持Windows.Linux.Android.IOS.Windows Phone系统 3.在Windows Phone中的SQLite是一个非托管组件 4.可以在Windows运行时中使用,也可以在C#项目中使用 5.在C#项目中需要通过Wi