//创建数据库的路径;
NSString
*path = [[
NSSearchPathForDirectoriesInDomains
(
NSDocumentDirectory
,
NSUserDomainMask
,
YES
)
lastObject
]
stringByAppendingPathComponent
:
@"data.sqlite"
];
if (success == sqlITE_OK) {
//表table:在创建的时候,一定要设置primary key(主键),并且主键不能频繁更改,且与数据无关;
@H_404_62@ NSString *sql = @"CREATE TABLE IF NOT EXISTS t_student (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,score REAL DEFAULT 60.0);";
}
//增加数据:使用insert 关键字;
NSString
*sql = [
NSString
stringWithFormat
:
@"INSERT INTO t_student (name,score) VALUES ('%@',%f);"
,name,175)">arc4random_uniform
(8000)/100.0 + 20];
NULL);
//更新/修改数据:使用update 和 set 关键字;
NULL);
@"SELECT id,score FROM t_student WHERE name LIKE '%8%'";
//
期望
结果保存在
stmt
里面
/*参数的含义:
int nByte,sql语句的最大长度 -1代表无限制;
*/
sqlite3_prepare_v2( NULL);
sqlITE_OK) {
}
}
@"datafmdb.sqlite"
];
self
.
database
= database;
BOOL successT= [self.@H_404_62@database @H_404_62@executeUpdate:@"CREATE TABLE IF NOT EXISTS t_student(id INTEGER PRIMARY KEY AUTOINCREMENT,score REAL);"];
3、查询语句:
//创建sql语句
while
([result
next
]) {
//name TEXT
//score DOUBLE
}
注意:FMDB封装了一套线程安全的数据库;
@H_404_62@NSString *path = [[@H_404_62@NSSearchPathForDirectoriesInDomains(@H_404_62@NSDocumentDirectory,@H_404_62@NSUserDomainMask,YES)@H_404_62@lastObject] @H_404_62@stringByAppendingPathComponent:@"data.sqlite"];
@H_404_62@FMDatabaseQueue *queue = [@H_404_62@FMDatabaseQueue @H_404_62@databaseQueueWithPath:path];
self
.
queue
= queue;
[
queue
inDatabase
:^(
FMDatabase
*db) {
BOOL success = [db @H_404_62@open];
if (success) {
BOOL
successT= [db
executeUpdate
:
score REAL);
”];
}
}];
//事务的开启,当一段数据修改需要一起执行。但是执行一部分之后,程序崩溃了或者停电了;剩下的修改语句不能进行。数据就有可能出错;事务就有这样一个功能,被包装成事务的一段代码,要么全部执行,要么都不执行;就可以避免这种情况;
//
开启事务
在这条语句之后的都是一个事务
[db @H_404_62@ beginTransaction];
//插入需要更新的语句;
//[db @H_404_62@ rollback]; 这是执行手动回滚;
[db
commit
];
}];