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 = [path objectAtIndex:0]; 

31,     

32,      return [documentDirectory stringByAppendingPathComponent: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 =[fileManager fileExistsAtPath:path];

    if (find) {

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

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

            sqlite3_close(_database);

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

            returnNO;

        }

    }

    if (sqlite3_open([path UTF8String], &_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, [nameString UTF8String] , -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;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值