在使用SQLite API函数如有疑问,可以参考官方函数文档:

http://www.sqlite.org/c3ref/funclist.html

操作SQLite数据库

SQLite数据库是文件数据库,是保存在文件系统中的。因此需要知道文件保存到哪里,下面的代码中,我们将Notebook.sqlite数据库存放在Documents目录下。其中涉及到SQLite数据库的创建、打开、创建数据表和关闭数据库等等操作。

NSString *docsDir;
NSArray *dirPaths;

// 获取 documents 目录
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];

// 构造数据库文件路径
databasePath = [[NSString alloc] initWithString:[docsDir stringByAppendingPathComponent:@"Notebook.sqlite"]];
NSFileManager *fileMgr = [NSFileManager defaultManager];
if([fileMgr fileExistsAtPath:databasePath] == NO){
const char *dbpath = [databasePath UTF8String];
// 创建数据库,并打开数据库
// SQLite的策略是如果有该文件就打开,如果没有就创建文件,也就是创建数据库。
if (sqlite3_open(dbpath, &noteDB) == SQLITE_OK) {
char *errMsg;
const char *sql_str ="CREATE TABLE IF NOT EXISTS Notebook (ID INTEGER  PRIMARY KEY AUTOINCREMENT, Whattime Text, Address TEXT, What TEXT, Who TEXT, NOTE TEXT)";

// 创建数据表 Notebook
if(sqlite3_exec(noteDB, sql_str, NULL, NULL, &errMsg) != SQLITE_OK){
NSLog(@"Failed to create table");
}

 

// 关闭数据库
sqlite3_close(noteDB);
} else {
NSLog(@"Failed to open/create database");
}
}

SQLite的策略是如果有该数据库文件就打开,如果没有就创建文件,也就是创建数据库。这里要注意,使用的是C语法,sqlite3_open传入的是数据库的地址。

下面的代码负责将NSString 对象转换为const char * 的C类型数据。

const char *dbpath = [databasePath UTF8String];

在调用sqlite3_exec(noteDB, sql_str, NULL, NULL, &errMsg)函数时,errMsg传的是地址,因为该函数要通过地址引用来写报错字符信息。

转载于:https://www.cnblogs.com/tuncaysanli/archive/2012/10/17/2727947.html

使用SQLite数据库存储数据(1)-操作SQLite数据库相关推荐

  1. python覆盖数据库重复数据_Python操作MySQL数据库,插入重复数据

    sql = "INSERT INTO test_c(id,name,sex)values(%s,%s,%s)" param = (1,'AJ','MAN') n = cursor. ...

  2. mysql数据库存储数据的过程_[数据库]MySql存储过程总结

    [数据库]MySql存储过程总结 0 2014-06-12 01:00:50 之前总是在MSSQL上写存储过程,没有在MYSQL上写过,也基本没有用过,今天需要用到MYSQL,研究了下,把项目的需要的 ...

  3. php mysql数据库删除数据_PHP 操作Mysql数据库删除数据示例

    需求 PHP连接数据库 POST参数数据控制ID删除数据 查询剩下的数据 php连接数据库 //config.php文件内容 $database = "xx"; $dataname ...

  4. Android学习笔记36:使用SQLite方式存储数据

    在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...

  5. 使用嵌入式关系型SQLite数据库存储数据

    除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库-SQLite,SQLite3支持 NUL ...

  6. 【转】Android使用嵌入式关系型SQLite数据库存储数据【学习记录】

    为什么80%的码农都做不了架构师?>>>    除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成 ...

  7. 【数据库学习笔记】——操作sqlite(增删改查)以及cursor的方法介绍

    目录 1.sqlite数据库介绍 1)常见的数据库操作 2)数据操作常见步骤 2.向数据表中增加数据(insert into) 1)向数据表中添加一条记录 2)向数据表中一次性添加多条记录 ​ 3.修 ...

  8. 从零开始学 MySQL —数据库和数据表操作

    ​前言 今天我们学习下核心的内容,学习并实践如何对数据库表和表中的内容做修改,删除,重命名等操作.(想看看周末还有多少爱学习的小伙伴,你们在哪里呀,O(∩_∩)O哈哈~) 1.目录 数据库操作:删除数 ...

  9. [MySQL基础]数据库存储数据的特点

    数据库存储数据的特点:

最新文章

  1. Cocos2d-JS事件处理机制
  2. PostgreSQL 安装 用户配置
  3. 计算机一级繁体字转换,繁体字转换器
  4. 中国可生物降解和生物可吸收支架行业市场供需与战略研究报告
  5. Dom-Attribute对象
  6. 知也atitit.解决struts2 SpringObjectFactory.getClassInstance NullPointerException  v2 q31无涯 - I...
  7. java之Calendar类
  8. Excel的Sumif、Sumifs求和结果错误
  9. 网页压缩 - GZIP
  10. 菜鸟学四轴控制器之6:刀具半径补偿算法
  11. 5分钟使用Unity制作AR应用,结合EasyAR制作AR(转)
  12. vue项目访问路径添加项目名称
  13. 【API】开源免费接口管理
  14. H263H264MPEG4
  15. 数值法求六轴机械臂逆运动学解
  16. 从自动驾驶事故中探索有效的性能提升及判责策略
  17. 华为网络--Hybrid接口工作原理与实验
  18. Greenplum数据库中master节点恢复
  19. 前端如何实现词云效果?
  20. android上消息推送的实现

热门文章

  1. JS实现数组去重(重复的元素只保留一个)
  2. 使用PHP得到所有的HTTP请求头
  3. 二叉树遍历(附Java实现代码)
  4. tensorflow数据增强
  5. java获取数组最大最小值
  6. jquery checked 操作多选
  7. kafka一直rebalance故障,重复消费
  8. PU learning学习笔记
  9. kubernetes问题排查
  10. 推荐场景中召回模型的演化过程