sqlite作为IOS开发中一种轻量型关系型数据库,对于大规模数据存储有效.
1, 开发使用工具sqlite manager :用于观察数据库操作 2,Linked Frameworks and Libraries包含libsqlite3.dylib库 3,sqlite实现功能: - (void)viewDidLoad { [super viewDidLoad]; NSArray* arrdic = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString* path= [arrdic objectAtIndex:0]; NSString* datapathlv = [path stringByAppendingPathComponent:@"dataLvfile"];sqlite3* datalv ;
//根据path打开数据库,不存在则创建
int result = sqlite3_open([datapathlv UTF8String], &datalv);
if (result == SQLITE_OK)
{
NSLog(@"DB have open");
}
//创建数据表
NSString* createSQL = @"CREATE TABLE IF NOT EXISTS FIELDS (TAG INTEGER PRIMARY KEY,FIELD_DATA TEXT);";
char* errorMsg;
if(SQLITE_OK != sqlite3_exec(datalv, [createSQL UTF8String], NULL, NULL, &errorMsg))
{
sqlite3_close(datalv);
NSLog(@"%s----",errorMsg );
}
//插入数据
char* sqlinset = "insert or replace into FIELDS (TAG,FIELD_DATA) VALUES (?,?);";
sqlite3_stmt * ST ;
if( sqlite3_prepare_v2(datalv, sqlinset, -1, &ST, nil) == SQLITE_OK)
{
sqlite3_bind_int(ST, 1, 9);
sqlite3_bind_text(ST, 2, "HEROLDQ", -1, NULL);
sqlite3_bind_text(ST, 2, "sky11", -1, NULL);
sqlite3_bind_int(ST, 1, 16);
}
if (sqlite3_step(ST)!= SQLITE_DONE) {
NSLog(@"erro");
}
sqlite3_finalize(ST);
//查询数据
NSString* query = @"select TAG,FIELD_DATA FROM
FIELDS ORDER BY TAG";
sqlite3_stmt* statement ;
if (sqlite3_prepare_v2(datalv, [query UTF8String], -1, &statement, nil)
== SQLITE_OK)
{
while (sqlite3_step(statement) == SQLITE_ROW)
{
int rowNum = sqlite3_column_int(statement, 0);
char* rowData = (char*)sqlite3_column_text(statement,1);
NSString* str = [[NSString alloc] initWithUTF8String:rowData];
NSLog(@"nstring %@",str);
}
sqlite3_finalize(statement);
}
//直接插入 ,delete
char* INSET = "INSERT INTO FIELDS VALUES (100,'V4B');";
sqlite3_exec(datalv, INSET, NULL, NULL, NULL);
char* del ="delete from FIELDS WHERE TAG = 15;"; sqlite3_exec(datalv, del, NULL, NULL, NULL);
//
// char* delte = "DELETE FROM FIELDS";
// sqlite3_exec(datalv, delte, NULL, NULL, NULL);
//
}