swift里面怎么实现连接数据库sqlite实现增删改查

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift里面怎么实现连接数据库sqlite实现增删改查相关的知识,希望对你有一定的参考价值。

  使用SQLiteDatabase操作SQLite数据库
  android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD)。对SQLiteDatabase的学习,我们应该重点掌握execSQL()和rawQuery()方法。execSQL()方法可以执行insert、delete、update和CREATE TABLE之类有更改行为的SQL语句; rawQuery()方法用于执行select语句。
  execSQL()方法的使用例子:
  SQLiteDatabase db = ....;
  db.execSQL("insert into person(name, age) values(\'1\', 24)");
  db.close();

  执行上面SQL语句会往person表中添加进一条记录,在实际应用中, 语句中的“林计钦”这些参数值会由用户输入界面提供,如果把用户输入的内容原样组拼到上面的insert语句, 当用户输入的内容含有单引号时,组拼出来的SQL语句就会存在语法错误。要解决这个问题需要对单引号进行转义,也就是把单引号转换成两个单引号。有些时候用户往往还会输入像“ & ”这些特殊SQL符号,为保证组拼好的SQL语句语法正确,必须对SQL语句中的这些特殊SQL符号都进行转义,显然,对每条SQL语句都做这样的处理工作是比较烦琐的。 SQLiteDatabase类提供了一个重载后的execSQL(String sql, Object[] bindArgs)方法,使用这个方法可以解决前面提到的问题,因为这个方法支持使用占位符参数(?)。
参考技术A 一般采用2种方式:

1:sqlite直接连,然后操作;

2:coredata,类似于java的hibernate框架,把一些操作封装起来了。
比较起来sqlite比较灵活,coredata维护起来很好,而且结构清晰。

3:下面示例代码展示了如何继承 SQLiteOpenHelper 创建数据库:

public class DatabaseHelper extends SQLiteOpenHelper
DatabaseHelper(Context context, String name, CursorFactory cursorFactory, int version)

super(context, name, cursorFactory, version);


@Override
public void onCreate(SQLiteDatabase db)
// TODO 创建数据库后,对数据库的操作


@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
// TODO 更改数据库版本的操作


@Override
public void onOpen(SQLiteDatabase db)
super.onOpen(db);
// TODO 每次成功打开数据库后首先被执行

SQLite 使用(创升增删改查)

首先Database 数据库创建

1.创建一个Database包,包内创建一个MyDatabaseHelper继承DatabaseHelper类,并实现里面的方法!

 3 import android.content.Context;
 4 import android.database.sqlite.SQLiteDatabase;
 5 import android.database.sqlite.SQLiteOpenHelper;
 6 import android.widget.Toast;
 7 
 8 /**
 9  * 数据库帮助类
10  * Created by Administrator on 2017/12/6.
11  */
12 
13 public class MyDatabaseHelper extends SQLiteOpenHelper{
14 
15     public static final String CREATE_USERINFO="CREATE TABLE USERINFO("         //创建表的SQL语句
16             + "id integer primary key autoincrement, "                      //id 设置主键
17             + "username text, "                                             //用户名
18             + "age integer, "                                               //年龄
19             + "sex text, "                                                  //性别
20             + "mAutograph text)";                                           //签名
21     private Context mContext;                          
22 
23 
24     /**
25      * 生成的构造方法
26      * @param context   获得上下文
27      * @param name
28      * @param factory
29      * @param version
30      */
31     public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
32         super(context, name, factory, version);
33         mContext=context; //获取上下文
34     }
35 
36 
37     /**
38      * 实现方法
39      * 创建数据库
40      * @param db
41      */
42     @Override
43     public void onCreate(SQLiteDatabase db) {
44         db.execSQL(CREATE_USERINFO);  //创建数据库,参数为创表语句
45         Toast.makeText(mContext,"创建表成功",Toast.LENGTH_LONG).show();
46     }
47 
48     /**
49      * 实现方法
50      * 升级数据库
51      * @param sqLiteDatabase
52      * @param i
53      * @param i1
54      */
55     @Override
56     public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
57     
58     }
59 }

2.升级数据库,

 1 /**
 2      * 实现方法
 3      * 升级数据库
 4      * @param sqLiteDatabase
 5      * @param i
 6      * @param i1
 7      */
 8     @Override
 9     public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
10         sqLiteDatabase.execSQL("drop table if exists CREATE_USERINFO"); //删除数据库
11         sqLiteDatabase.execSQL("drop table if exists CREATE_CONTACT");  //删除数据库
12     }
13 
14  private MyDatabaseHelper mDBhelper;     //声明数据库帮助类变量
15     @Override
16     protected void onCreate(Bundle savedInstanceState) {
17         super.onCreate(savedInstanceState);
18         setContentView(R.layout.activity_main);
19         mDBhelper=new MyDatabaseHelper(this,"this,UserInfo",null,3); //3代表升级
20     }
25     /**
26      * 启动时创建数据库
27      */
28     @Override
29     protected void onStart() {
30         super.onStart();
31         mDBhelper.getWritableDatabase(); //获得可写的数据库,会创建helper数据库
32     }

3.查询数据库

 1   @Override
 2     public List<UserInfo> getUserInfo(MyDatabaseHelper db) {
 3         SQLiteDatabase sqlhelper=db.getWritableDatabase();
 4         Cursor cursor=sqlhelper.query("USERINFO",null,null,null,null,null,null);
 5         UserInfo user;
 6         List<UserInfo> list=new ArrayList<>();
 7         if(cursor.moveToFirst()){
 8             do{
 9                 String name=cursor.getString(cursor.getColumnIndex("username"));
10                 String age=cursor.getString(cursor.getColumnIndex("age"));
11                 String sex=cursor.getString(cursor.getColumnIndex("sex"));
12                 String phone=cursor.getString(cursor.getColumnIndex("Phone"));
13                 user=new UserInfo(name,age,sex,phone);
14                 list.add(user);
15             }while (cursor.moveToNext());
16         }
17         cursor.close();
18         return list;
19     }

4.插入数据库  MyDatabaseHelper database继承至DatabaseHelper

 1  @Override
 2     public void setUserInfo(MyDatabaseHelper database,UserInfo user) {
 3         SQLiteDatabase db=database.getWritableDatabase();
 4         ContentValues values=new ContentValues();
 5         values.put("username",user.getName());
 6         values.put("age",user.getAge());
 7         values.put("sex",user.getSex());
 8         values.put("Phone",user.getPhone());
 9         db.insert("USERINFO",null,values);
10     }

5.修改数据库

1 @Override
2     public void DelectUserInfo(MyDatabaseHelper database) {
3         SQLiteDatabase sqLiteDatabase=database.getWritableDatabase();
4         ContentValues values=new ContentValues();
5         values.put("price",10.99); //所需要修改的字段 price 字段 10.99值
6         
7         //修改数据 ?站位符 new String[]{修改?数据}
8         sqLiteDatabase.update("USERINFO",values,"name=?",new String[]{"TheDaviciCode"});
9     }

6.删除数据

1  @Override
2     public void DelectUserInfo(MyDatabaseHelper database) {
3         //删除ID小于5的数据
4         SQLiteDatabase db=database.getWritableDatabase();
5         db.delete("USERINFO","id > 5",new String[]{"5"});
6     }

 


以上是关于swift里面怎么实现连接数据库sqlite实现增删改查的主要内容,如果未能解决你的问题,请参考以下文章

android开发中的SQLite数据库的增删改查功能怎么实现?

android怎么实现sqlite的增删改查

C# 使用 Dapper 实现 SQLite 增删改查

SQLite 使用(创升增删改查)

java连接sql数据库,怎么实现增删改查?

怎样编写一个mvc连接数据库进行增删改查