SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。
那么对于数据库的操作是什么样的呢?
// 打开数据库 NSString *fileDBName = [[NSBundle mainBundle] pathForResource:@"qingyun_student" ofType:@"sqlite"]; NSLog(@"fileDbName is %@",fileDBName); // 表示数据库的句杈 sqlite3 *qingYunDb; // 根据数据库文件路径,来打开数据库 int result = sqlite3_open([fileDBName UTF8String], &qingYunDb); // 判断数据库有没有成功打开, 如果打开失败如何操作 if (result != SQLITE_OK) { NSLog(@"Open db %@ failure.",fileDBName); return; } // 定义一条insert SQL语句 NSString *insertSQL = @"INSERT INTO COMPANY VALUES (15, 'NianHao', 25, 'Texas', 5000.00 )"; // 执行SQL语句 // 定义一个错误变量,用于保存当执行失败的时候, 识别错误信息 char *error = nil; result = sqlite3_exec(qingYunDb, [insertSQL UTF8String], nil, nil, &error); if (result != SQLITE_OK) { NSLog(@"insert data failure:%@,%s",insertSQL,error); return; }
由此,通过普通的SQL语句就可以将相应的数据写到数据库中。以以上方式就可以对数据库进行操作了。那么对数据的增删及修改都可以通过上述方式进行,那么怎么进行查询使用呢?
NSString *selectSQL = @"SELECT * FROM COMPANY"; // 它表示数据查询语句编译后的结果对象 sqlite3_stmt *stmt = nil; //将select SQL语句编译一下, 将编译的结果存放在stmt指针中。 resultFlag = sqlite3_prepare_v2(qingyunDB, [selectSQL UTF8String], -1, &stmt, NULL); if (resultFlag != SQLITE_OK) { NSLog(@"prepare sql failure."); return; } // 返回结果可以理解为数据库的游标,指向的是当前数据表里的一条数据 resultFlag = sqlite3_step(stmt); // 当resultFlag == SQLITE_ROW表示数据库的表里面还有数据 while (resultFlag == SQLITE_ROW) { NSString *name =[ NSString stringWithFormat:@"%s",sqlite3_column_text(stmt, 1)]; QYEmploye *emp = [[QYEmploye alloc] init]; emp.name =name; emp.age = sqlite3_column_int(stmt, 2); emp.address = [NSString stringWithFormat:@"%s",sqlite3_column_text(stmt, 3)]; [self.employee addObject:emp]; resultFlag = sqlite3_step(stmt); } sqlite3_finalize(stmt); // 关闭数据库 sqlite3_close(qingyunDB);