iOS Sqlite3数据库简明教程

1,导入支持sqlite3的本地frame: libsqlite3.tbd (Xcode 7及更高版本后缀为 .tbd ,Xcode 6 及之前版本后缀为 .dylib)

2,导入头文件并设置所需属性:

#import "ViewController.h"
#import "Person.h"
#import "sqlite3.h"

@interface ViewController ()

@property (nonatomic,assign) sqlite3 *sqlite3;
@property (nonatomic,strong) NSArray *dataList;

3,创建数据库,如果要打开某个数据库文件也用此方法,有此文件名会打开,没有默认创建:

#pragma mark_Sqlite3Open
- (void)openDatabase {
    //1.设置文件名
    NSString *filename = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"person.db"];
    //2.打开数据库文件,如果没有会自动创建一个文件
    NSInteger result = sqlite3_open(filename.UTF8String, &_sqlite3);
    if (result == SQLITE_OK) {
        NSLog(@"打开数据库成功!");
        //3.创建一个数据库表
        char *errmsg = NULL;
        sqlite3_exec(_sqlite3, "CREATE TABLE IF NOT EXISTS t_person(id integer primary key autoincrement, name text, age integer)", NULL, NULL, &errmsg);
        if (errmsg) {
            NSLog(@"错误:%s", errmsg);
        } else {
            NSLog(@"创表成功!");
        }
    } else {
        NSLog(@"打开数据库失败!");
    }
}

4,往数据库中录入数据:

#pragma mark_Sqlite3Insert
- (void)insertData {
    
    NSString *nameStr;
    NSInteger age;
    for (NSInteger i = 0; i < 1000; i++) {
        nameStr = [NSString stringWithFormat:@"Bourne-%d", arc4random_uniform(1000)];
        age = arc4random_uniform(80) + 20;
        NSString *sql = [NSString stringWithFormat:@"INSERT INTO t_person (name, age) VALUES('%@', '%ld')", nameStr, age];
        char *errmsg = NULL;
        sqlite3_exec(_sqlite3, sql.UTF8String, NULL, NULL, &errmsg);
        if (errmsg) {
            NSLog(@"错误:%s", errmsg);
        }
    }
    NSLog(@"插入完毕!");
}

5,读取数据库:

     5.1,创建一个Person类:

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface Person : NSObject<NSCoding>

//@property (nonatomic,strong) UIImage *img;
@property (nonatomic,copy) NSString *name;
@property (nonatomic,assign) NSInteger age;

+(in)personWithName:(NSString *)name Age:(NSInteger)age;

@end

     5.2,实现Person中的方法:

#import "Person.h"

@implementateion Person

+(instancetype)personWithName:(NSString *)name Age:(NSInteger)age{
    
    Person *person = [[Person alloc]init];
    person.name = name;
    person.age = age;

    return person;
    
}

@end

    5.3,读取数据库中的数据:

#pragma mark_Sqlite3Read
- (void)readData {
    
    //读取数据库中数据之前,需要先打开数据库
    NSMutableArray *mArray = [NSMutableArray arrayWithCapacity:1000];
    char *sql = "select name, age from t_person;";
    sqlite3_stmt *stmt;
    NSInteger result = sqlite3_prepare_v2(_sqlite3, sql, -1, &stmt, NULL);
    
    if (result == SQLITE_OK) {
         NSLog(@"STMT:%d",sqlite3_step(stmt));
        while (sqlite3_step(stmt) == SQLITE_ROW) {
            char *name = (char *)sqlite3_column_text(stmt, 0);
            NSInteger age = sqlite3_column_int(stmt, 1);
            
            //创建对象
            
            Person *person = [Person personWithName:[NSString stringWithUTF8String:name] Age:age];
            
           //
            NSLog(@"Name:%@ Age:%ld PName:%@ Page:%ld",[NSString stringWithUTF8String:name],age,person.name,person.age);
            
            [mArray addObject:person];
        }
        self.dataList = mArray;
    }
    sqlite3_finalize(stmt);
    
    
    NSLog(@"DataList:%@",self.dataList);
}

注:读数据库时一定要先打开数据库

转载于:https://my.oschina.net/Kuture/blog/693337

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python SQLite3数据库教程 SQLite3是一种轻量级的数据库,它可以在Python中使用。以下是Python SQLite3数据库教程的一些重点: 1. 导入SQLite3模块 要使用SQLite3,您需要导入Python中的sqlite3模块。您可以使用以下代码导入它: import sqlite3 2. 连接到数据库 要连接到SQLite3数据库,您需要使用connect()方法。以下是一个示例: conn = sqlite3.connect('example.db') 在这个例子中,我们连接到名为example.db的数据库。如果该数据库不存在,则会创建 ### 回答2: Python是一门高级编程语言,常用于数据处理、Web开发等方面。在Python中,sqlite3是一个轻量级的数据库,它用于存储数据并提供查询、更新等操作。使用sqlite3可以方便地存储和处理数据,这对于开发数据库驱动的应用程序非常有用。 在使用Python中的sqlite3之前,需要先引入sqlite3库。我们可以通过以下代码来创建一个数据库连接: ```python import sqlite3 conn = sqlite3.connect('example.db') ``` 其中,sqlite3.connect()方法用于创建一个连接到文件example.db的数据库。如果不存在该文件,该方法将会自动创建它。 接下来,我们可以通过创建一个Cursor对象来执行SQL语句。例如,我们可以通过以下代码来创建一张表: ```python import sqlite3 conn = sqlite3.connect('example.db') c = conn.cursor() c.execute('''CREATE TABLE stocks (date text, trans text, symbol text, qty real, price real)''') ``` 运行上述代码后,将在example.db数据库中创建一张名为“stocks”的表。表中包含了5个列,分别为date、trans、symbol、qty和price。 接下来,我们可以通过insert语句向“stocks”表中添加一条数据: ```python import sqlite3 conn = sqlite3.connect('example.db') c = conn.cursor() c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)") conn.commit() ``` 在此,我们通过execute()方法向“stocks”表中插入了一条记录。此时,我们需要调用commit()方法以提交更改,否则更改将不会被保存到数据库中。 除此之外,我们还可以通过select语句查询数据。以下是一个示例代码: ```python import sqlite3 conn = sqlite3.connect('example.db') c = conn.cursor() for row in c.execute('SELECT * FROM stocks ORDER BY price'): print(row) ``` 以上代码中,我们通过execute()方法执行了一条查询语句,查询了“stocks”表中的所有记录并按price字段进行排序。然后,我们使用循环遍历返回的结果,输出每一行记录。 总的来说,Python sqlite3库是一个非常实用的工具,它方便了我们存储和处理数据。使用该库,可以轻松地创建表格和索引、插入和查询数据等操作。如果你想要使用Python进行和sqlite3的交互,请参考以上代码实现,并在实践中不断探索。 ### 回答3: Python sqlite3数据库模块是Python自带的一个标准库,通过该模块可以方便地使用sqlite3数据库sqlite3是一种轻型的数据库,可以在各种操作系统上运行,数据保存在本地,提供了可靠的数据存储和查询功能。 使用Python sqlite3模块前,需要先安装sqlite3数据库,并且创建一个数据库文件。打开命令行终端,输入sqlite3命令进入sqlite3控制台,然后输入命令创建数据库文件: ``` $ sqlite3 example.db SQLite version 3.11.0 2016-02-15 17:29:24 Enter ".help" for usage hints. sqlite> .quit ``` 接下来使用Python sqlite3模块连接该数据库文件,并创建一个表格: ```python import sqlite3 conn = sqlite3.connect('example.db') c = conn.cursor() # 创建一个表格 c.execute('''CREATE TABLE stocks (date text, trans text, symbol text, qty real, price real)''') # 插入数据 c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)") # 提交事务 conn.commit() # 关闭连接 conn.close() ``` 在上面的示例中,首先使用connect()函数连接了example.db数据库文件。使用cursor()函数创建一个游标对象,用于执行SQL语句。接着使用execute()函数执行了CREATE TABLE语句,创建一个名为stocks的表格,包括date、trans、symbol、qty和price五个属性。然后执行了一个INSERT语句,将一条数据插入到表格中。最后使用commit()函数提交事务,将修改保存到数据库,并使用close()函数关闭连接。 除了CREATE TABLE和INSERT语句,sqlite3模块还提供许多其他的SQL操作函数,如UPDATE、DELETE、SELECT等。此外,还可以使用executemany()函数一次性执行多个SQL语句,如: ```python # 插入多个数据 data = [('2006-01-05','BUY','RHAT',100,35.14), ('2006-02-05','SELL','IBM',50,55.14), ('2006-03-15','BUY','GOOG',200,280.14)] c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', data) ``` 在这个示例中,data是一个包含多条数据的列表,使用executemany()函数可以一次性执行多个INSERT语句。其中的?号是SQL语句中的占位符,可以用元组或列表来代替。 Python sqlite3模块还提供了很多其他的函数和方法,如fetchone()、fetchall()、execute_script()等,用于对数据库进行查询、更新和删除操作。 总的来说,Python sqlite3模块是一个很方便的数据库操作工具,使用简单、易学易用,可以方便地进行数据存储和查询。需要注意的是,sqlite3数据库是一种轻型数据库,不能与高性能的数据库比较。如果需要进行大规模的数据处理或并发操作,建议使用其他的数据库,如MySQL、PostgreSQL等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值