热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Sqlite3的心得理解以及一些使用的经验

Sqlite3的心得理解以及一些使用的经验(一)iOS的数据存储是一个很让新手们纠结的地方,一大堆的存储方法,搞的童鞋们都很迷茫,后来知道了有一种被称为Sqlite3的东东,大家都开心的想去用了。这

Sqlite3的心得理解以及一些使用的经验(一)

 

iOS的数据存储是一个很让新手们纠结的地方,一大堆的存储方法,搞的童鞋们都很迷茫,后来知道了有一种被称为Sqlite3的东东,大家都开心的想去用了。这个时候出现问题了。查起来迷茫的一米啊。

下面就说下我在学习Sqlite3过程中遇到的一些问题,以及个人对使用这玩意的一些心得。

当然,我没用第三方库,习惯用第三方库的童鞋就可以无视我了。哈哈。

 

1,          学习Sqlite3必须要有一款相匹配的软件,我现在用的是MesaSQLite,图形化的界面会极大的帮助理解;

2,          理解数据库操作步骤:打开——操作——关闭;一定要遵循这个步骤来,确保数据的安全性和准确性;

3,          理解Sql语句的地位和作用:这个时候就可以感受到数据库软件的作用了,每一条语句都可以在数据库软件里进行一个测试,如果相应的结果出来,那么下面的事情就很简单了,如果语句不正确,OK,找到正确的语句为止;

4,          数据库的一般操作:增、删、改、查,每样做一遍,理解下,做完后,ok,亲,你就升级了,一般的数据库问题你都阔以解决老。哈哈

 

下面来说下数据库操作的一般流程吧:

 

数据库一般都是存放在沙盒的Documents目录下,下面是iOS编程常用的一些目录的寻找方法:

1,          // 资源目录

2,      NSString *defaultDBPath = [[[NSBundle mainBundle]resourcePath] stringByAppendingPathComponent:filename];

3,      //==============================================================================

4,          //获取程序Documents目录路径

5,          //目录列表

6,      NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

7,      //根目录

8,      NSString *documentsDirectory = [pathsobjectAtIndex:0];

9,       

10,    //==============================================================================

11,       // 获取程序Library目录路径

12,       //目录列表

13,    NSArray *paths =NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES);

14,    //根目录

15,    NSString *documentsDirectory = [pathsobjectAtIndex:0];

16,     

17,     

18,    //==============================================================================

19,    //获取程序caches目录

20,    NSArray *cache =NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES); 

21,    NSString *cachePath = [cacheobjectAtIndex:0]; 

22,     

23,     

24,    //==============================================================================

25,    //根据文件名来获取文件路径 doucument

26,     

27,    - (NSString*)dataFilePath:(NSString *)sender

28,    { 

29,      NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); 

30,      NSString *documentDirectory = [pathobjectAtIndex:0]; 

31,     

32,      return [documentDirectorystringByAppendingPathComponent:sender]; 

33,    }

34,     

35,    //==============================================================================

36,       //获取程序app文件所在目录路径

37,     

38,    NSString *homePath = NSHomeDirectory();

39,    //==============================================================================

40,       //获取程序tmp目录路径

41,     

42,    NSString *tempPath =NSTemporaryDirectory();

43,     

44,       //==============================================================================

45,       //获取程序应用包路径

46,    NSString * path = [[NSBundlemainBundle]resourcePath];

47,    //

48,    NSString * path = [[NSBundle mainBundle] pathForResource:@"info" ofType: @"txt"];

49,      //

 

一般来说。我们建数据库文件都会把他保存在Documents目录下,即如下:

50,       //获取程序Documents目录路径

51,       //目录列表

52,    NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

53,    //根目录

54,    NSString *documentsDirectory = [pathsobjectAtIndex:0];

 

//打开数据库的方法

-(BOOL) openDB{

   

    NSString *path = [selfdataFilePath];//datafilepath就是数据库在documents目录的路径;

    NSFileManager*fileManager = [NSFileManagerdefaultManager];

    BOOL find =[fileManagerfileExistsAtPath:path];

    if (find) {

        //////NSLog(@"Database file have alreadyexisted");

        if (sqlite3_open([pathUTF8String], &_database) !=SQLITE_OK) {

            sqlite3_close(_database);

            //////NSLog(@"Error:open database failed");

            returnNO;

        }

    }

    if (sqlite3_open([pathUTF8String], &_database) ==SQLITE_OK) {

        returnYES;

    }else {

        sqlite3_close(_database);

        //////NSLog(@"Error:open database failed");

        returnNO;

    }

    returnNO;

}

 

 

 

 

 

//创建数据库的方法

-(BOOL) createTestList:(sqlite3 *)db withString:(NSString *)nameString{

//这就是sql语句,我这边的方法传的namestring就是这条sql语句的nsstring形式,创建数据库一般是通过创建其中的表的形式进行创建

    //char *sql = "CREATE TABLE IF NOTEXISTS SHIBOR(ID INTEGER PRIMARY KEY AUTOINCREMENT,version text,oidtext,publishDate text,deadline text,shibor text,bp text,bpTrend text)";

    //char *sql = "CREATE TABLE IF NOTEXISTS SHIBOR,INT,WHILE";

    //////NSLog(@"%@",nameString);

    sqlite3_stmt *statement;

    NSInteger sqlReturn =sqlite3_prepare_v2(_database, [nameStringUTF8String] , -1, &statement,nil);

    if (sqlReturn !=SQLITE_OK) {

        //////NSLog(@"Error:failedto prepare statement :create Table");

        returnNO;

    }

   

    int success =sqlite3_step(statement);

    sqlite3_finalize(statement);

   

    if (success !=SQLITE_DONE) {

        //////NSLog(@"Error:failedto dehydrate :create table test");

        returnNO;

    }

   

    //////NSLog(@"Create table\"Table\" successed");

    returnYES;

}



推荐阅读
author-avatar
大街上
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有