数据库操作(SQLite)

SQLite 是一个轻量级的关系数据库。SQLite最初的设计目标是用于嵌入式系统,它占用资源非常少,在嵌入式设备中,只需要几百K的内存就够了,目前应用于Android、iOS、Windows Phone等智能手机。iOS 使用时SQLite,只需要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件即可。

数据库操作包含打开数据库、创建表,表的增、删、改、查。下面代码给出了数据库操作.

创建并打开数据库:

//获取数据库路径
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documents = [paths objectAtIndex:0];
    NSString *database_path = [documents stringByAppendingPathComponent:DBNAME];  

    //如果数据库存在,则用sqlite3_open直接打开(不要担心,如果数据库不存在sqlite3_open会自动创建)
    //打开数据库,这里的[path UTF8String]是将NSString转换为C字符串,因为SQLite3是采用可移植的C(而不是
    //Objective-C)编写的,它不知道什么是NSString.
    if (sqlite3_open([database_path UTF8String], &db) == SQLITE_OK) {
        return YES;
    }else{
        return NO;
        NSLog(@"数据库打开失败");
        sqlite3_close(db);
    }  

iOS中没有提供创建数据库的命令,当使用sqlite3_open时,如果数据库文件不存在会自行创建数据库,如果存在会打开数据库。打开数据库后就可以创建表并操作表内容了,iOS中的sqlite3使用sqlite3_exec来创建表、插入表内容、修改表内容、删除表内容等操作,使用sqlite3_prepare_v2来查询表。

-(void)execSql:(NSString *)sql
{
    if ([self openDB]) {
        char *err;
        if (sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) {
            NSLog(@"数据库操作数据失败!");
        }else{
            NSLog(@"%@",sql);
        }
        sqlite3_close(db);
    }
}  

创建表:

NSString *sqlCreateTable =  [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS ‘%@‘ (‘%@‘ INTEGER PRIMARY KEY AUTOINCREMENT, ‘%@‘ TEXT, ‘%@‘ INTEGER, ‘%@‘ TEXT)",TABLENAME,ID,NAME,AGE,ADDRESS];
    [self execSql:sqlCreateTable];  

插入数据:

-(void) insertData{
    NSString *insertSql1= [NSString stringWithFormat:
                      @"INSERT INTO ‘%@‘ (‘%@‘, ‘%@‘, ‘%@‘) VALUES (‘%@‘, ‘%@‘, ‘%@‘)",
                      TABLENAME, NAME, AGE, ADDRESS, @"张三", @"13", @"济南"];
    [self execSql:insertSql1];  

    NSString *insertSql2 = [NSString stringWithFormat:
                      @"INSERT INTO ‘%@‘ (‘%@‘, ‘%@‘, ‘%@‘) VALUES (‘%@‘, ‘%@‘, ‘%@‘)",
                      TABLENAME, NAME, AGE, ADDRESS, @"李四", @"12", @"济南"];
    [self execSql:insertSql2];  

}  
// 更新数据

-(void) updateData{
    NSString *updateSql = [NSString stringWithFormat:
                      @"UPDATE ‘%@‘ SET ‘%@‘ = ‘%@‘ WHERE ‘%@‘ = ‘%@‘",
                      TABLENAME,   AGE,  @"15" ,AGE,  @"13"];
    [self execSql:updateSql];
}  

删除表内容:

-(void) deleteData{
    NSString *sdeleteSql = [NSString stringWithFormat:
                      @"delete from %@ where %@ = ‘%@‘",
                      TABLENAME, NAME, @"张三"];
    [self execSql:sdeleteSql];
}  

查询:

-(void) selectData{  

    [self openDB];
    NSString *sqlQuery = [NSString stringWithFormat:
                      @"SELECT * FROM %@",TABLENAME];
    sqlite3_stmt * statement;  

    if (sqlite3_prepare_v2(db, [sqlQuery UTF8String], -1, &statement, nil) == SQLITE_OK) {  

        //查询结果集中一条一条的遍历所有的记录,这里的数字对应的是列值,注意这里的列值  

        while (sqlite3_step(statement) == SQLITE_ROW) {
            char *name = (char*)sqlite3_column_text(statement, 1);
            NSString *nsNameStr = [[NSString alloc]initWithUTF8String:name];  

            int age = sqlite3_column_int(statement, 2);  

            char *address = (char*)sqlite3_column_text(statement, 3);
            NSString *nsAddressStr = [[NSString alloc]initWithUTF8String:address];  

            NSLog(@"name:%@  age:%d  address:%@",nsNameStr,age, nsAddressStr);
        }
    }else{
        NSLog(@"select error:%@",sqlQuery);  

    }
    sqlite3_close(db);
}  

数据库操作(SQLite)

时间: 2024-11-16 23:37:31

数据库操作(SQLite)的相关文章

python之数据库操作(sqlite)

python之数据库操作(sqlite) 不像常见的客户端/服务器结构范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分.所以主要的通信协议是在编程语言内的直接API调用.这在消耗总量.延迟时间和整体简单性上有积极的作用.整个数据库(定义.表.索引和数据本身)都在宿主主机上存储在一个单一的文件中.相比其它大型数据库来说,确实有些差距.但是包括事务(transaction),就是代表原子性.一致性.隔离性和持久性的(ACID),触发器(trigger)和多数的

ios数据库操作SQLite

iPhone中支持通过sqlite3来访问iPhone本地的数据库. 具体使用方法如下 1:添加开发包libsqlite3.0.dylib 首先是设置项目文件,在项目中添加iPhone版的sqlite3的数据库的开发包,在项目下的Frameworks点击右键,然后选择libsqlite3.0.dylib文件. libsqlite3.0.dylib文件地址: /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.sdk/

Qt操作Sqlite数据库

总算在Qt中把Sqlite操作成功了,写点总结吧.其实早就弄对了的,但查看数据库就是没有想要的结果.最后发现生成的执行文件在Dbug目录,与先前设定的路径不同,这才恍然大悟. 一.使用到数据库模块,需在pro文件中加入:QT += sql 二.所需数据库操作的相关头文件:#include <QSqlDatabase>#include <QSqlQuery>#include <QSqlRecord>#include <QSqlField> 三.连接Sqlite

.NET环境下,通过LINQ操作SQLite数据库

//对应数据库中的某个表 [Table(Name = "main.Student")]    public class Student    {        [Column(Name = "StuName", DbType = "varchar(50)")]        public string StuName { get; set; }        [Column(Name = "StuNo", DbType = &

iOS 中SQLite数据库操作

在iOS中实现SQLite数据库的操作:1.导入框架(libsqlite3.0.tbd) 2.导入头文件<sqlite3.h> 3.实现数据的增删改查 实现简单 SQLite数据库操作 的 demo 具体过程: 1.创建名为 SQLite_Manage 的.h .m 文件,导入头文件 <sqlite3.h> 2.数据库在一个app中只有一个,使用单例模式:(代码如下) 1 + (SQLite_Manager *)sharedManager{ 2 static SQLite_Mana

QT SQLite 多数据库操作大全

QT SQLite 多数据库操作大全 一.单数据库模型 一般QT都是把打开一个缺省数据库连接,操作一个数据库连接,但是对Sqlite中频率修改容易加锁,因此有一种设计模式是把频率修改的表放在不同的数据库文件中,但这样要修改代码操作数据库部分 通常打开代码 http://developer.nokia.com/community/wiki/Creating_an_SQLite_database_in_Qt bool DatabaseManager::openDB() { // Find QSLit

SQLite数据库操作

安卓中创建数据库的步骤: 1.写一个类MyOpenHelper继承SQLiteOpenHelper类 2.覆写其中的OnCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 3.创建数据库: MyOpenHelper helper = new MyOpenHelper(this); //创建数据库 需要调用 getReadableDatabase 或 getWritableDa

无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.demo1" /> 上面targetPackage指定的包要和应用的package相同. (2)在清单文件中ap

(一一四)使用FMDB操作SQLite数据库

上节介绍了用系统自带的C语言库操作SQLite的方法,比较繁琐,使用FMDB会大幅度简化,并且是面向对象的,使用十分方便. 使用步骤如下: 先从github下载FMDB框架,然后把它导入工程. ①导入libsqlite3.0.dylib库. ②导入主头文件FMDatabase.h. ③创建数据库对象,传入路径,打开数据库,如果数据库不存在会被创建. NSString *sqlitePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDir