zoukankan      html  css  js  c++  java
  • SQLite数据操作

    1.向学生表中插入100条数据

    2.按条件查询学生数据

    3.修改学生数据

    4.删除学生数据

    import UIKit

    class ViewController: UIViewController {

        lazy var documentsPath:String={

            let paths=NSSearchPathForDirectoriesInDomains(.DocumentDirectory,.UserDomainMask,true)

            return paths.first!

        }()

        var db:COpaquePointer=nil

        var stmt:COpaquePointer=nil

        override func viewDidLoad() {

            super.viewDidLoad()

            createOrOpenDatabase()

            //createTable()

            //基本步骤

            //1.打开数据库

            //2.处理数据

            //3.关闭数据库

            

            //插入数据

            //insertStudents()

            //查询数据

            //queryStudents()

            //修改学生数据

            //updateStudent()

            //queryStudents()

            //删除学生数据

            deleteStudents()

            queryStudents()

            //关闭数据库

            sqlite3_close(db)

        }

    }

    extension ViewController{

        func createOrOpenDatabase(){

            print("(NSHomeDirectory())")

            let path:NSString = "(documentsPath)/test.sqlite3"

            let filename=path.UTF8String

            if sqlite3_open(filename,&db) != SQLITE_OK {

                print("create or open failed.......")

                sqlite3_close(db)

            }

        }

        func createTable(){

            let string:NSString = "create table if not exists Student(id integer primary key autoincrement,sno text,name text,score,integer)"

            let sql = string.UTF8String

            if sqlite3_exec(db,sql,nil,nil,nil) != SQLITE_OK{

                print("create table failed......")

                sqlite3_close(db)

            }

        }

        func insertStudents(){

            //sno: "1001~1100"

            //name: "[a-j][01-10]"

            //score: 0-100

            let strs1=["a","b","c","d","e","f","g","h","i","j"]

            let strs2=["01","02","03","04","05","06","07","08","09","10"]

            

            for i in 0..<100{

                let sno="(1001+i)"

                let name=strs1[i/10] + strs2[i%10]

                let score=i

                insertStudent(sno:sno,name:name,score:score)

            }

        }

        func insertStudent(sno sno:String,name:String,score:Int){

            //准备SQL语句

            let string:NSString="insert into Student(sno,name,score) values(?,?,?)"

            let sql=string.UTF8String

            

            //解析SQL文本语句

            if sqlite3_prepare_v2(db,sql,-1,&stmt,nil) != SQLITE_OK{

                sqlite3_close(db)

                print("(sno),insert failed......")

            }

            

            //绑定参数

            let csno=(sno as NSString).UTF8String

            let cname=(name as NSString).UTF8String

            

            sqlite3_bind_text(stmt,1,csno,-1,nil)

            sqlite3_bind_text(stmt,2,cname,-1,nil)

            sqlite3_bind_int(stmt,3,Int32(score))

            

            //执行SQL语句

            if sqlite3_step(stmt) == SQLITE_ERROR{

                sqlite3_close(db)

                print("(sno),insert failed......")

            }else{

                //释放资源

                sqlite3_finalize(stmt)

            }

        }

        func queryStudents(){

            //准备SQL语句

            let string:NSString="select sno,name,score from Student"

            //let string:NSString="select sno,name,score from Student where score > 60"

            //let string:NSString="select sno,name,score from Student where name like 'a%'"

            let sql=string.UTF8String

            //解析SQL文本语句

            if sqlite3_prepare_v2(db,sql,-1,&stmt,nil) != SQLITE_OK{

                sqlite3_close(db)

                print("query failed......")

                return

            }

            //执行SQL语句

            while sqlite3_step(stmt) == SQLITE_ROW{

                let csno = sqlite3_column_text(stmt,0)

                let sno = NSString(UTF8String:UnsafePointer(csno))!

                let cname = sqlite3_column_text(stmt,1)

                let name=NSString(UTF8String:UnsafePointer(cname))!

                let score=sqlite3_column_int(stmt,2)

                print("(sno),(name),(score)")

            }

            //释放资源

            sqlite3_finalize(stmt)

        }

        func updateStudent(){

            let string:NSString = "update Student set score = 100 where name like 'a%'"

            let sql = string.UTF8String

            

            if sqlite3_exec(db,sql,nil,nil,nil) != SQLITE_OK{

                sqlite3_close(db)

                print("update failed......")

            }

        }

        func deleteStudents(){

            let string:NSString="delete from Student where score <60"

            let sql = string.UTF8String

            

            if sqlite3_exec(db,sql,nil,nil,nil) != SQLITE_OK {

                sqlite3_close(db)

                print("delete failed......")

            }

        }

    }

  • 相关阅读:
    7月15日考试 题解(链表+状压DP+思维题)
    暑假集训日记
    C# .NET 使用 NPOI 生成 .xlsx 格式 Excel
    JavaSE 基础 第42节 局部内部类
    JavaSE 基础 第41节 匿名内部类
    JavaSE 基础 第40节 内部类概述
    JavaSE 基础 第39节 接口的应用
    JavaSE 基础 第38节 接口的实现
    JavaSE 基础 第37节 接口概述
    JavaSE 基础 第36节 抽象类概述与使用
  • 原文地址:https://www.cnblogs.com/daochong/p/5211453.html
Copyright © 2011-2022 走看看