使用SQLite数据库存储数据(1)-操作SQLite数据库
在使用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, ¬eDB) == 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数据库相关推荐
- python覆盖数据库重复数据_Python操作MySQL数据库,插入重复数据
sql = "INSERT INTO test_c(id,name,sex)values(%s,%s,%s)" param = (1,'AJ','MAN') n = cursor. ...
- mysql数据库存储数据的过程_[数据库]MySql存储过程总结
[数据库]MySql存储过程总结 0 2014-06-12 01:00:50 之前总是在MSSQL上写存储过程,没有在MYSQL上写过,也基本没有用过,今天需要用到MYSQL,研究了下,把项目的需要的 ...
- php mysql数据库删除数据_PHP 操作Mysql数据库删除数据示例
需求 PHP连接数据库 POST参数数据控制ID删除数据 查询剩下的数据 php连接数据库 //config.php文件内容 $database = "xx"; $dataname ...
- Android学习笔记36:使用SQLite方式存储数据
在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...
- 使用嵌入式关系型SQLite数据库存储数据
除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库-SQLite,SQLite3支持 NUL ...
- 【转】Android使用嵌入式关系型SQLite数据库存储数据【学习记录】
为什么80%的码农都做不了架构师?>>> 除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成 ...
- 【数据库学习笔记】——操作sqlite(增删改查)以及cursor的方法介绍
目录 1.sqlite数据库介绍 1)常见的数据库操作 2)数据操作常见步骤 2.向数据表中增加数据(insert into) 1)向数据表中添加一条记录 2)向数据表中一次性添加多条记录 3.修 ...
- 从零开始学 MySQL —数据库和数据表操作
前言 今天我们学习下核心的内容,学习并实践如何对数据库表和表中的内容做修改,删除,重命名等操作.(想看看周末还有多少爱学习的小伙伴,你们在哪里呀,O(∩_∩)O哈哈~) 1.目录 数据库操作:删除数 ...
- [MySQL基础]数据库存储数据的特点
数据库存储数据的特点:
最新文章
- Cocos2d-JS事件处理机制
- PostgreSQL 安装 用户配置
- 计算机一级繁体字转换,繁体字转换器
- 中国可生物降解和生物可吸收支架行业市场供需与战略研究报告
- Dom-Attribute对象
- 知也atitit.解决struts2 SpringObjectFactory.getClassInstance NullPointerException v2 q31无涯 - I...
- java之Calendar类
- Excel的Sumif、Sumifs求和结果错误
- 网页压缩 - GZIP
- 菜鸟学四轴控制器之6:刀具半径补偿算法
- 5分钟使用Unity制作AR应用,结合EasyAR制作AR(转)
- vue项目访问路径添加项目名称
- 【API】开源免费接口管理
- H263H264MPEG4
- 数值法求六轴机械臂逆运动学解
- 从自动驾驶事故中探索有效的性能提升及判责策略
- 华为网络--Hybrid接口工作原理与实验
- Greenplum数据库中master节点恢复
- 前端如何实现词云效果?
- android上消息推送的实现