一:USING SQLITE3
1.add libsqlite3.dylib library to your project
2.#import "sqlite3.h"
3.declare a variable of type sqlite3 ,like this "sqlite3 *db"
4.openDB
-(void) openDB{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *documentDir = [ paths objcetAtIndex:0];
NSString *fileDB = [documentDir stringByAppendingPathComponent:@"database.sql"];
if(sqlite3_open([fileDB UTF8String],&db) != SQLITE_OK){
sqlite3_close(db);
NSAssert(0,@"database failed to open");
}
}
The sqlite3_open() c function open a SQLite database whose filename is specified as the "fileDB"
sqlite3_open() result codes:
#define SQLITE_OK 0 /* Successful result */
#define SQLITE_ERROR 1 /* SQL error or missing database */
#define SQLITE_INTERNAL 2 /* Internal logic error in SQLite */
#define SQLITE_PERM 3 /* Access permission denied */
#define SQLITE_ABORT 4 /* Callback routine requested an abort */
#define SQLITE_BUSY 5 /* The database file is locked */
#define SQLITE_LOCKED 6 /* A table in the database is locked */
#define SQLITE_NOMEM 7 /* A malloc() failed */
#define SQLITE_READONLY 8 /* Attempt to write a readonly database */
#define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite3_interrupt()*/
#define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */
#define SQLITE_CORRUPT 11 /* The database disk image is malformed */
#define SQLITE_NOTFOUND 12 /* NOT USED. Table or record not found */
#define SQLITE_FULL 13 /* Insertion failed because database is full */
#define SQLITE_CANTOPEN 14 /* Unable to open the database file */
#define SQLITE_PROTOCOL 15 /* NOT USED. Database lock protocol error */
#define SQLITE_EMPTY 16 /* Database is empty */
#define SQLITE_SCHEMA 17 /* The database schema changed */
#define SQLITE_TOOBIG 18 /* String or BLOB exceeds size limit */
#define SQLITE_CONSTRAINT 19 /* Abort due to constraint violation */
#define SQLITE_MISMATCH 20 /* Data type mismatch */
#define SQLITE_MISUSE 21 /* Library used incorrectly */
#define SQLITE_NOLFS 22 /* Uses OS features not supported on host */
#define SQLITE_AUTH 23 /* Authorization denied */
#define SQLITE_FORMAT 24 /* Auxiliary database format error */
#define SQLITE_RANGE 25 /* 2nd parameter to sqlite3_bind out of range */
#define SQLITE_NOTADB 26 /* File opened that is not a database file */
#define SQLITE_ROW 100 /* sqlite3_step() has another row ready */
#define SQLITE_DONE 101 /* sqlite3_step() has finished executing */
5.creating a table
-(void) createTableNamed:(NSString *) tableName
withField1:(NSString *) field1
withField2:(NSString *) field2 {
char *err;
NSString *sql = [NSString stringWithFormat:
@“CREATE TABLE IF NOT EXISTS ‘%@‘ (‘%@‘ TEXT PRIMARY KEY, ‘%@‘ TEXT);”,
tableName, field1, field2];
if (sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) {
sqlite3_close(db);
NSAssert(0, @“Tabled failed to create.”);
}
}
6.Inserting Records
-(void) insertRecordIntoTableNamed:(NSString *) tableName
withField1:(NSString *) field1
field1Value:(NSString *) field1Value
andField2:(NSString *) field2
field2Value:(NSString *) field2Value {
NSString *sql = [NSString stringWithFormat:
@“INSERT OR REPLACE INTO ‘%@‘ (‘%@‘, ‘%@‘) VALUES (‘%@‘,’%@‘)“,tableName, field1, field2, field1Value, field2Value];
char *err;
if (sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) {
sqlite3_close(db);
NSAssert(0, @“Error updating table.”);
}
}
7.Bind Variables
NSString *sqlStr = [NSString stringWithFormat:
@“INSERT OR REPLACE INTO ‘%@‘ (‘%@‘, ‘%@‘) VALUES (?,?)“,
tableName, field1, field2];
const char *sql = [sqlStr UTF8String];
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(db, sql, -1, &statement, nil) == SQLITE_OK) {
sqlite3_bind_text(statement, 1, [field1Value UTF8String], -1, NULL);
sqlite3_bind_text(statement, 2, [field2Value UTF8String], -1, NULL);
}
To execute the SQL statement, you use the sqlite3_step() function, followed by the sqlite3_
finalize() function to delete the prepared SQL statement
if (sqlite3_step(statement) != SQLITE_DONE)
NSAssert(0, @“Error updating table.”);
sqlite3_finalize(statement);
写道
you used the sqlite3_exec() function to execute
SQL statements. In this example, you actually use a combination of sqlite3_
prepare(), sqlite3_step(), and sqlite3_finalize() functions to do the same
thing. In fact, the sqlite3_exec() function is actually a wrapper for these three
functions. For non-query SQL statements (such as for creating tables, inserting
rows, and so on), it is always better to use the sqlite3_exec() function.
sqlite3_exec() 是sqlite3_ prepare(), sqlite3_step(), and sqlite3_finalize() 三个函数的一个封装,最好的方法是直接使用sqlite3_exec()
8。Retrieving Records
-(void) getAllRowsFromTableNamed: (NSString *) tableName {
//---retrieve rows---
NSString *qsql = @“SELECT * FROM CONTACTS”;
sqlite3_stmt *statement;
if (sqlite3_prepare_v2( db, [qsql UTF8String], -1, &statement, nil) ==
SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
char *field1 = (char *) sqlite3_column_text(statement, 0);
NSString *field1Str = [[NSString alloc] initWithUTF8String: field1];
char *field2 = (char *) sqlite3_column_text(statement, 1);
NSString *field2Str = [[NSString alloc] initWithUTF8String: field2];
NSString *str = [[NSString alloc] initWithFormat:@“%@ - %@“,
field1Str, field2Str];
NSLog(str);
[field1Str release];
[field2Str release];
[str release];
}
//---deletes the compiled statement from memory---
sqlite3_finalize(statement);
}
}
分享到:
相关推荐
在使用SQLite3时,开发者通常需要检查每次调用的返回值,以便及时发现并处理错误。此外,SQLite3的C API允许动态执行SQL语句,这使得它在各种编程语言中都易于集成。为了跨平台兼容性,代码应避免依赖特定平台的特性...
在这个"SQLite3 使用实例"中,我们将探讨三个基本的使用场景,帮助你理解如何在实际开发中应用 SQLite3。 1. **创建数据库和表** 在第一个实例中,你可能会看到如何创建一个新的 SQLite3 数据库以及定义表的结构。...
SQLite3 是一个轻量级的、自包含的、无服务器的 SQL 数据库引擎,它可以在各种操作系统上使用,包括 Linux、Windows 和 macOS。在终端利用 SQLite3 查看应用数据和了解数据库结构,主要涉及到以下几个核心知识点: ...
在Linux操作系统中,SQLite3是一...以上就是关于Linux下SQLite3使用的一些基础知识,包括安装、基本操作、事务处理以及与其他语言的交互。了解并熟练掌握这些内容,你就能在Linux环境中有效地利用SQLite3进行数据管理。
一、SQLite3使用简介 SQLite3允许你在本地文件系统中创建数据库,通过API调用来执行SQL语句。使用SQLite3,首先需要将其库链接到你的项目中。在C/C++中,这通常涉及到包含`sqlite3.h`头文件,并链接`sqlite3.lib`库...
"Windows 中 SQLite3 使用" Windows 中 SQLite3 使用详细介绍了如何在 Windows 下生成 DLL、LIB 等方法。以下是对标题和描述中所说的知识点的详细说明: 一、SQLite3 简介 SQLite3 是一个开源免费的嵌入式关系...
在这个“Sqlite3使用实例”中,我们将探讨如何利用SQLite3进行基本的数据库操作,包括创建数据库、创建表、插入数据、查询数据、更新数据以及删除数据。这些实例特别适合初学者理解和掌握SQLite3的使用。 首先,...
### SQLITE3 使用总结 #### 一、SQLite3简介与特性 SQLite是一款轻量级的数据库管理系统,它以源代码的形式发布,并且具有跨平台性,支持Windows、Linux、Mac OS等操作系统。SQLite的一个显著特点就是它不需要单独...
以下是关于 SQLite3 使用的一些关键知识点: 1. **公共财性质**:SQLite3 是一套公共领域的软件,这意味着任何人都可以自由使用、修改和分发它,无需担心版权问题。作者希望使用者能够行善并分享。 2. **SQL 支持*...
### SQLite3 使用教程知识点详解 #### 一、SQLite3简介 SQLite是一款轻量级的数据库管理系统,被广泛应用于各种操作系统中,特别是在Mac OS X 10.4版本之后,SQLite3已经成为系统的一部分。SQLite3的主要特点包括...
sqlite3使用详解.pdf sqlite3使用详解.pdf sqlite3使用详解.pdf sqlite3使用详解.pdf
对于查询结果,可以使用`sqlite3_prepare_v2()`、`sqlite3_step()`和`sqlite3_column_XXX()`等函数来遍历结果集,获取每一行的数据。 8. **错误处理**: SQLite3提供了错误码和错误消息,当操作失败时,可以通过`...