Swift 操作数据库

操作数据库
以一个实例展示输入名称和年龄保存到数据库,然后在另外一个tab里面显示,围绕一个TableView 来完成一个对数据的增、删、改、查的操作 。
具体实现代码:

UsingData.zip 

1:创建工程的时候需要选择Use Core Data 使用数据库是Sqlit。
4790.png 
2:导入  CoreData
283066.png 
3:定义对象读取数据库:  NSManagedObjectContext
706651.png 
4:创建表:创建表的时候首写字母一定是大写不然会提示出错
775849.png
5:获取数据连接,相当于创建一个连接池connection,用这个对象就可以保存,查询数据。
635744.png 

  context = ( UIApplication.sharedApplication().delegate asAppDelegate ).managedObjectContext

6:创建访问表的变量。

584225.png
7:设置字段值:

var row:AnyObject  =  NSEntityDescription.insertNewObjectForEntityForName("USERS", inManagedObjectContext: context!)

        if(name.text.isEmpty){

            UIAlertView(title: "提示", message: "姓名不能为空", delegate: nil, cancelButtonTitle: "确认").show()

            name.becomeFirstResponder()  //得到焦点

            return

        }

        row.setValue(name.text, forKey: "name")

        if  let _age  = age.text.toInt() {   //可以根据此种方法判断是否是int类型

            var _age:Int  = age.text.toInt()!

            if(_age < 0){

                UIAlertView(title: "提示", message: "年龄必须为正数", delegate: nil, cancelButtonTitle: "确认").show()

                age.becomeFirstResponder()

                return

            }

            row.setValue(_age, forKey: "age")

        }else{

            UIAlertView(title: "提示", message: "年龄必须为正数", delegate: nil, cancelButtonTitle: "确认").show()

            age.becomeFirstResponder()

            return

        }



527986.png
8:保存操作,保存数据

context?.save(nil)

646799.png 

9:读取数据:将数据读取到NString

  context = ( UIApplication.sharedApplication().delegate asAppDelegate ).managedObjectContext!

         dataarry = context.executeFetchRequestNSFetchRequest(entityName: "USERS"), error: nil)!

336201.png

10:打开表可以看到我们保存的数据:(大家可以去网上下载Sqlit工具,我用的Navict 感觉很不错的支持mysql、orcal、sqlit 等)
457294.png


11:更新数据:

    @IBAction func update(sender: AnyObject) {

        data.setValue(_uname.text, forKey: "name")

        data.setValue(_uage.text.toInt(), forKey: "age")

        data.managedObjectContext?.save(nil)


        dismissViewControllerAnimated(true, completion: nil)


12:删除

/ Override to support editing the table view.

override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {

        if editingStyle == .Delete {

            // Delete the row from the data source

            //tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)

            context.deleteObject(dataarry[indexPath.rowasNSManagedObject)

            context.save(nil);

            refreshData()

        } else if editingStyle == .Insert {

            // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view

        }    


    }


import UIKit

import CoreData

class ViewController: UIViewController {


    @IBOutlet weak var age: UITextField!

    @IBOutlet weak var name: UITextField!

    var  context: NSManagedObjectContext!

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

         context = ( UIApplication.sharedApplication().delegate asAppDelegate ).managedObjectContext

    }


    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }



    @IBAction func saveAction(sender: AnyObject) {

        var row:AnyObject  =  NSEntityDescription.insertNewObjectForEntityForName("USERS", inManagedObjectContext: context!)

        if(name.text.isEmpty){

            UIAlertView(title: "提示", message: "姓名不能为空", delegate: nil, cancelButtonTitle: "确认").show()

            name.becomeFirstResponder()  //得到焦点

            return

        }

        row.setValue(name.text, forKey: "name")

        if  let _age  = age.text.toInt() {   //可以根据此种方法判断是否是int类型

            var _age:Int  = age.text.toInt()!

            if(_age < 0){

                UIAlertView(title: "提示", message: "年龄必须为正数", delegate: nil, cancelButtonTitle: "确认").show()

                age.becomeFirstResponder()

                return

            }

            row.setValue(_age, forKey: "age")

        }else{

            UIAlertView(title: "提示", message: "年龄必须为正数", delegate: nil, cancelButtonTitle: "确认").show()

            age.becomeFirstResponder()

            return

        }

        context?.save(nil)

        age.resignFirstResponder()  //第一响应事件取消,消除键盘操作

    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值