热门标签 | 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;

}



推荐阅读
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 本文介绍了基于c语言的mcs51单片机定时器计数器的应用教程,包括定时器的设置和计数方法,以及中断函数的使用。同时介绍了定时器应用的举例,包括定时器中断函数的编写和频率值的计算方法。主函数中设置了T0模式和T1计数的初值,并开启了T0和T1的中断,最后启动了CPU中断。 ... [详细]
  • 如何基于ggplot2构建相关系数矩阵热图以及一个友情故事
    本文介绍了如何在rstudio中安装ggplot2,并使用ggplot2构建相关系数矩阵热图。同时,通过一个友情故事,讲述了真爱难觅的故事背后的数据量化和皮尔逊相关系数的概念。故事中的小伙伴们在本科时参加各种考试,其中有些沉迷网络游戏,有些热爱体育,通过他们的故事,展示了不同兴趣和特长对学习和成绩的影响。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
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社区 版权所有