美文网首页
数据库应用

数据库应用

作者: Grt婷 | 来源:发表于2017-07-29 14:46 被阅读0次

    数据库应用

    1.建工程,在工程中添加sql外包,如图所示,选择第二个libsqlite3.tbd

    2.创建一个桥接文件

    command+n创建Header File,在里面写#import <sqlite3.h>

    3.获取document路径

    let doc=NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
            let sqlPath=doc+"/Student.sqlite"
            print(sqlPath)
    

    4.打开数据库,如果没有创建

    //定义为全局变量
    var db:OpaquePointer?=nil 
    if sqlite3_open(sqlPath,&db) == SQLITE_OK {
                print("数据库打开")
            }
    
    

    5.创建表

    let sql = "create table if not exists user (id integer , name text, age integer)"
            //1.数据库 2.sql语句 3.执行结果 4.参数 5.错误信息
            let resdult=sqlite3_exec(db, sql, nil,nil, nil)
            if resdult == SQLITE_OK {
                print("创建表成功")
            }else{
                print("创建表失败")
            }
    
    

    6.sql语句操作

    //插入数据
            sqlite3_exec(db, "insert into user(id,name,age) values(1,'小明',12)",nil, nil, nil)
            if resdult==SQLITE_OK{
                print("插入成功")
            }else{
                print("插入失败")
            }
            //更新
            let updateSql="update user set name='小粒' where name='小明'";
            let resdult1=sqlite3_exec(db, updateSql, nil, nil, nil)
            if resdult1==SQLITE_OK{
                print("更新成功")
            }else{
               print("更新失败")
           }
            //删除
            let deleteSql="delete from user where name='小粒'";
            let resdult2=sqlite3_exec(db,deleteSql, nil, nil, nil)
            if resdult2==SQLITE_OK{
               print("删除成功")
            }else{
                print("删除失败")
            }
             //查找
             let searchSql="select * from user where name=?"
            //1.数据库 2.sql 3.sql长度 -1 自动计算 4.伴随指针 5.nil
            var stmt:OpaquePointer?=nil
            let resdult3=sqlite3_prepare_v2(db, searchSql,-1, &stmt, nil)
            //给?赋值
            //1.伴随指针 2.?在第几位 从1开始 3.绑定的值
            sqlite3_bind_int(stmt, 2, 1)
            //将SQLITE_TRANSIENT定义为全局变量
                private let SQLITE_TRANSIENT = unsafeBitCast(-1, to:     sqlite3_destructor_type.self)
            sqlite3_bind_text(stmt, 1, "小明", -1, SQLITE_TRANSIENT)
            if resdult3==SQLITE_OK{
                           print("预编译成功")
                       }else{
                           print("预编译失败")
                        }
            //执行sql
            while sqlite3_step(stmt) == SQLITE_ROW{
                //取值
                let id=sqlite3_column_int(stmt, 0)
                let cname=sqlite3_column_text(stmt, 1)
                let name=String(cString: cname!)
                let age=sqlite3_column_int(stmt,2)
                print("id=\(id),name=\(name),age=\(age)")
                //把对象装到数组中
            }
            //释放stmt
            sqlite3_finalize(stmt)
            //关闭数据库
            sqlite3_close(db)
    
    

    相关文章

      网友评论

          本文标题:数据库应用

          本文链接:https://www.haomeiwen.com/subject/uixrxxtx.html