sqlite常用操作

来源:互联网 发布:任志强反党 知乎 编辑:程序博客网 时间:2024/05/21 12:39
1、首先是数据库要保存的路径
        NSArray *array=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsPaths=[array objectAtIndex:0];

        NSString *databasePaths=[documentsPaths stringByAppendingPathComponent:@"test_DB"];


2、然后建立数据库,新建数据库这个苹果做的非常好,非常方便
       sqlite3 *database;
        //新建数据库,存在则打开,不存在则创建
        if (sqlite3_open([databasePaths UTF8String], &database)==SQLITE_OK)
        {
            NSLog(@"open success");

       else {
            NSLog(@"open failed");
        }
       }
3、对数据库建表操作:如果在些程序的过程中,发现表的字段要更改,一定要删除之前的表,如何做,就是删除程序或者换个表名,主键是自增的
            char *errorMsg;
            NSString *sql=@"create table if not exists users(User_id integer primary key,Password text)";
            //创建表
            if (sqlite3_exec(database, [sql UTF8String], NULL, NULL, &errorMsg)==SQLITE_OK )
            {
                 NSLog(@"create success");
            }else{

                NSLog(@"create error:%s",errorMsg);
                sqlite3_free(errorMsg);
           }
4、插入数据
                NSString *insertSQLStr = [NSString stringWithFormat:@"insert into users(Password)values ("%@")",str1];
                const char *insertSQL=[insertSQLStr UTF8String];
                //插入数据
                if (sqlite3_exec(database, insertSQL, NULL, NULL, &errorMsg)==SQLITE_OK)
                {
                    NSLog(@"insert ok");
                }else{
                    NSLog(@"insert error:%s",errorMsg);
                    sqlite3_free(errorMsg);
                }
5、查找数据
                sql = @"select * from users";
                sqlite3_stmt *stmt;
                //查找数据
                if(sqlite3_prepare_v2(database, [sql UTF8String], -1, &stmt, nil)==SQLITE_OK)

                {
                    while (sqlite3_step(stmt)==SQLITE_ROW) {
                        int userId=sqlite3_column_int(stmt, 0);
                        const unsigned char *password= sqlite3_column_text(stmt, 1);
                        NSLog(@"UserId:%i,password:%s",userId,password);
                    }
                }
6、更新数据
                const char *sqlUpdate="update users set Password=?where User_id=?";
                if (sqlite3_prepare_v2(database, sqlUpdate, -1, &stmt, NULL)!=SQLITE_OK) {
                    NSLog(@"Error:%s",sqlite3_errmsg(database));
                }
                const char* newPass="6666";
                sqlite3_bind_text(stmt, 1, newPass, -1, SQLITE_TRANSIENT);
                sqlite3_bind_int(stmt, 2, 1);
                sqlite3_step(stmt);
                sqlite3_reset(stmt);
8、封装好的方法:
sqlite3_stmt     用于保存编译好的SQL语句
sqlite3_open(),   打开数据库,没有数据库时创建。
sqlite3_exec(),   执行非查询的sql语句
Sqlite3_step(), 在调用sqlite3_prepare后,使用这个函数在记录集中移动。
sqlite3_finalize //删除一条已备语句
Sqlite3_close(), 关闭数据库文件还有一系列的函数,用于从记录集字段中获取数据,如
sqlite3_column_text(), 取text类型的数据。
sqlite3_column_blob(),取blob类型的数据
sqlite3_column_int(), 取int类型的数据
sqlite3_column_string //返回某一行的字符串
0 0
原创粉丝点击