swift3.0 创建sqlite数据库步骤方法

一,导入描述文件

1.

2,

.

3,

二,写桥接文件sqliteManager

1.文件里写入

#import <sqlite3.h>就可以了

2.把桥接文件添加到编译环境

三, 写数据库管理类(单例)

import UIKit 

class sqliteManager: NSObject {
  private static let manager: sqliteManager = sqliteManager()
  //单例
  class func shareManager() -> sqliteManager{
    return manager
  }
  //数据库对象
  private var db:OpaquePointer? = nil
  func openDB(sqliteName:String){
    //0.拿到数据库的路径
    let path = sqliteName.docDir()
    print(path)
    let cPath = path.cString(using: String.Encoding.utf8)
    //1.需要代开的数据库的路径 c语言的字符串
    //2.打开之后的数据库对象(指针),以后所有的数据库操作,都必须拿到这个指针才能进行相关操作
    if sqlite3_open(cPath, &db) != SQLITE_OK{
      print("数据库打开失败")
      return
    }
    if creatTable(){
      print("创建表成功")
    }else{
      print("创建表失败")
    }
  }
  private func creatTable() -> Bool
  {
    // 1.编写SQL语句
    // 建议: 在开发中编写SQL语句, 如果语句过长, 不要写在一行
    // 开发技巧: 在做数据库开发时, 如果遇到错误, 可以先将SQL打印出来, 拷贝到PC工具中验证之后再进行调试
    let sql = "CREATE TABLE IF NOT EXISTS T_Person( \n" +
      "id INTEGER PRIMARY KEY AUTOINCREMENT, \n" +
      "name TEXT, \n" +
      "age INTEGER \n" +
    "); \n"
    //    print(sql)
    // 2.执行SQL语句
    return execSQL(sql: sql)
  }
  func execSQL(sql: String) -> Bool
  {
    // 0.将Swift字符串转换为C语言字符串
    let cSQL = sql.cString(using: String.Encoding.utf8)! 

    // 在SQLite3中, 除了查询意外(创建/删除/新增/更新)都使用同一个函数
    /*
     1. 已经打开的数据库对象
     2. 需要执行的SQL语句, C语言字符串
     3. 执行SQL语句之后的回调, 一般传nil
     4. 是第三个参数的第一个参数, 一般传nil
     5. 错误信息, 一般传nil
     */
    if sqlite3_exec(db, cSQL, nil, nil, nil) != SQLITE_OK
    {
      return false
    }
    return true
  } 

}

四,在AppDelegate里调用openDB函数 创建数据库

mport UIKit 

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate { 

  var window: UIWindow? 

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    sqliteManager.shareManager().openDB(sqliteName: "tergun.sqlite")
    return true
  }
} 

运行结果

附件

工具类

//
// String+Category.swift
// DSWeibo
//
// Created by xiaomage on 15/9/10.
// Copyright © 2015年 小码哥. All rights reserved.
// 

import UIKit 

extension String{
  /**
  将当前字符串拼接到cache目录后面
  */
  func cacheDir() -> String{
    let path = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last! as NSString
    return path.appendingPathComponent((self as NSString).lastPathComponent)
  }
  /**
  将当前字符串拼接到doc目录后面
  */
  func docDir() -> String
  {
    let path = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last! as NSString
    return path.appendingPathComponent((self as NSString).lastPathComponent)
  }
  /**
  将当前字符串拼接到tmp目录后面
  */
  func tmpDir() -> String
  {
    let path = NSTemporaryDirectory() as NSString
    return path.appendingPathComponent((self as NSString).lastPathComponent)
  }
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • IOS开发OC代码中创建Swift编写的视图控制器

    IOS开发OC代码中创建Swift编写的视图控制器 背景 近日在和一群朋友做项目,我和另一位同学负责iOS客户端,我是一直使用OC的,而他只会Swift,因此在我们分工协作之后,就需要把代码合在一起,这就牵扯到如何在TabbarController中添加一个swift创建的子控制器的问题. 解决 首先在一个OC项目中新建一个Swift类,继承自UITableViewController,并且修改其view背景色,方便后续测试. import UIKit class ESSwiftTableVie

  • swift where与匹配模式的实例详解

    swift where与匹配模式的实例详解 前言: 在众多 Swift 提供给 Objective-C 程序员使用的新特性中,有个特性把自己伪装成一个无聊的老头,但是却在如何优雅的解决"鞭尸金字塔"的问题上有着巨大的潜力.很显然我所说的这个特性就是 switch 语句, 对于很多 Objective-C 程序员来说,除了用在 Duff's Device 上比较有趣之外,switch 语句非常笨拙,与多个 if 语句相比,它几乎没有任何优势. 1.基本使用 Swift中switch语句c

  • iOS swift实现转场动画的方法示例

    转场动画介绍 转场动画在我们日常开发中是经常遇到的,所谓转场动画,就是一个控制器的view切到另一个控制器的view上过程中过的动画效果.本例子是实现了在导航控制器的titleView边上慢慢弹出一个控制器.下面话不多说,来一起看看详细的介绍: 效果图: 专场前 专场后 示例代码 首先自定义一个animator类.在需要转场的控制器内,设置代理 //需要设置转场动画的控制器titleViewVc.transitioningDelegate = aniamator//这里的animator是ani

  • Swift实现JSON转Model的方法及HandyJSON使用讲解

    背景: 很多时候,我们从服务端请求下的数据都是Json格式,我们需要拿这些数据显示到我们的UI界面. 因此,我们的做法基本都会先将json转为方便使用的数据模型,或者也可以直接转字典解决. 在OC中,我们有很多优秀的第三方库帮助我们实现,比如MJExtension.JSONModel等,这些库基本都是利用runtime实现读取属性名并利用kvc重新赋值属性. 在Swift中,由于runtime的局限,比较出名的有SwiftyJSON.ObjectMapper等. 其中: 1.SwiftyJSON

  • Swift 3中使用FMDB遇到的问题与解决方法

    本文主要给大家介绍了关于在Swift 3中使用FMDB遇到的问题与解决方法,分享出来供大家参考学习,下面来一起看看详细的介绍: 状况 OC项目转Swift,打算继续使用FMDB.Cocoapods进来后,在桥接文件 "XXX-Bridging-Header.h" 中写入#import "FMDB.h". 编译报错,如下图所示. Cocoapods Podfile platform :ios, '10.0' use_frameworks! targetsArray =

  • swift guard关键字详解及使用

    swift guard关键字详解及使用 Swift提供guard关键字,guard关键字可以简化繁琐的判断逻辑 func buy( money: Int , price: Int , capacity: Int , volume: Int){ if money >= price{ if capacity >= volume{ print("I can buy it!") print("\(money-price) Yuan left.") print(&

  • swift 单例的实现方法及实例

    swift 单例的实现方法及实例 定义Game类,代码如下: public class Game { public var score = 0 public static let dafaultGame = Game() private init(){ } public func addscore(){ score += 10 } } 1.将init方法设置成private 2.定义静态变量 3.赋值给静态变量调用init方法 调用 let game1 = Game.dafaultGame ga

  • swift 字符串String的使用方法

    swift 字符串String的使用方法 1.声明 var str = "Hello, playground" //var str: String = "Hello, playground" // 空字符串 let emptyString = "" let emptyString2 = String() // 使用String()初始化字符串 let str2 = String("Hello, swift") 2.判断字符串是

  • swift3.0 创建sqlite数据库步骤方法

    一,导入描述文件 1. 2, . 3, 二,写桥接文件sqliteManager 1.文件里写入 #import <sqlite3.h>就可以了 2.把桥接文件添加到编译环境 三, 写数据库管理类(单例) import UIKit class sqliteManager: NSObject { private static let manager: sqliteManager = sqliteManager() //单例 class func shareManager() -> sqli

  • Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】

    本文实例讲述了Python操作SQLite数据库的方法.分享给大家供大家参考,具体如下: SQLite简介 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl.C

  • Python操作SQLite数据库的方法详解

    本文实例讲述了Python操作SQLite数据库的方法.分享给大家供大家参考,具体如下: SQLite简单介绍 SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身.它是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tc

  • js+html5操作sqlite数据库的方法

    本文实例讲述了js+html5操作sqlite数据库的方法.分享给大家供大家参考,具体如下: //copyright by lanxyou lanxyou[at]gmail.com var lanxDB=function(dbname){ var db=openDatabase(dbname,'1.0.0','',65536); return{ //返回数据库名 getDBName:function(){ return dbname; }, //初始化数据库,如果需要则创建表 init:func

  • python处理SQLite数据库的方法

    目录 前言: 一.安装 三.数据库连接.关闭等 四.表操作 1.创建数据表 2.显示数据表数目 3.删除数据表 五.Cusor的一些方法 六.SQL操作 1.查 2.增 3.删 4.改 七.SQL常用语句 八.row_factory高级操作 1.使用 2.循环输出所有值 九.实例 1.从sqlite数据库中返回json格式数据 前言: 数据库非常重要,程序的数据增删改查需要数据库支持.python处理数据库非常简单.而且不同类型的数据库处理逻辑方式大同小异.本文以sqlite数据库为例,介绍一下

  • Python3实现连接SQLite数据库的方法

    本文实例讲述了Python3实现连接SQLite数据库的方法,对于Python的学习有不错的参考借鉴价值.分享给大家供大家参考之用.具体方法如下: 实例代码如下: import sqlite3 db = r"D:\pyWork\test.db" #pyWork目录下test.db数据库文件 drp_tb_sql = "drop table if exists staff" crt_tb_sql = """ create table if

  • Python轻量级ORM框架Peewee访问sqlite数据库的方法详解

    本文实例讲述了Python轻量级ORM框架Peewee访问sqlite数据库的方法.分享给大家供大家参考,具体如下: ORM框架就是 object relation model,对象关系模型,用来实现把数据库中的表 映射到 面向对象编程语言中的类,不需要写sql,通过操作对象就能实现 增删改查. ORM的基本技术有3种: (1)映射技术 数据类型映射:就是把数据库中的数据类型,映射到编程语言中的数据类型.比如,把数据库的int类型映射到Python中的integer 类型. 类映射:把数据库中的

  • C#基于SQLiteHelper类似SqlHelper类实现存取Sqlite数据库的方法

    本文实例讲述了C#基于SQLiteHelper类似SqlHelper类实现存取Sqlite数据库的方法.分享给大家供大家参考.具体如下: 这个类不是我实现的,英文原文地址为http://www.eggheadcafe.com/articles/20050315.asp,这里修改了原文中分析sql语句参数的方法,将方法名修改为AttachParameters,将其修饰符修改为private,并直接传递command到这个方法,直接绑定参数到comand.修改后的代码如下 using System;

  • Android操作存放在assets文件夹下SQLite数据库的方法

    本文实例讲述了Android操作存放在assets文件夹下SQLite数据库的方法.分享给大家供大家参考.具体如下: 因为这次的项目需要自带数据,所以就就把数据都放到一个SQLite的数据库文件中了,之后把该文件放到了assets文件夹下面.一开始打算每次都从assets文件夹下面把该文件夹拷贝到手机的SD卡或者手机自身的存储上之后再使用,后来考虑到每次都拷贝的话效率不高,并且如果涉及到对数据库的修改操作的话拷贝之后数据就被恢复了. 因此就写了该封装,该封装只是在第一次使用数据库文件的时候把该文

  • IntellJ Idea 2020版添加sqlite数据库的方法

    工具列表: 1.Sqlite 2. SQLiteStudio 3. IntellJ 4. sqlite-jdbc-3.32.3.2.jar 运行结果先睹为快: 下载安装IntellJ 直接到官网下载即可,新手建议不要下载最新的,一旦编译器UI上有修改和教程对不上号,自己爬楼摸索比较话时间.当然也会有第一手的宝贵收获. https://www.jetbrains.com/idea/download/#section=windows 下载Sqlite开发工具 https://www.sqlite.o

随机推荐