Swift 操作数据库

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

 

1:创建工程的时候需要选择Use Core Data 使用数据库是Sqlit。
 
2:导入  CoreData
 
3:定义对象读取数据库:  NSManagedObjectContext
 
4:创建表:创建表的时候首写字母一定是大写不然会提示出错

5:获取数据连接,相当于创建一个连接池connection,用这个对象就可以保存,查询数据。
 

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

6:创建访问表的变量。


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

        }




8:保存操作,保存数据

context?.save(nil)

 

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

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

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



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


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()  //第一响应事件取消,消除键盘操作

    }

}


你可能感兴趣的:(IOS学习)