欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

sqlite的增删改查详解

程序员文章站 2022-05-08 11:25:14
...

增删改查源代码:

myHelper.java

package com.example.sqlite3lianxi;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class myHelper extends SQLiteOpenHelper {

    /*
     *  参数(上下文,数据库文件名称,工厂游标,数据库文件版本号)
     */
    public myHelper(Context context, String name, CursorFactory factory, int version) {
        super(context, "people.db", null,version);
    }

    //数据库文件创建成功后调用
    @Override
    public void onCreate(SQLiteDatabase db) {
        //SQLiteDatabase db是一个数据库操作对象
        //注意如果本地有数据库了就不会执行此方法了
        db.execSQL("create table people(id integer,name text)");
        System.out.println("创建成功!");
    }

    //数据库文件需要更新时调用
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        System.out.println("数据库更新完成!");
    }

}

MainActivity.java

package com.example.sqlite3lianxi;

import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //注意这句话执行后并没有创建数据库,仅创建了对象而已
        myHelper helper=new myHelper(getBaseContext(),null, null, 2);
        //当执行完这句话才创建完成数据库
        helper.getWritableDatabase();


    }
    //增加数据
    public void insert() {
        //创建数据库对象
        myHelper helper=new myHelper(getBaseContext(),null, null, 2);
        //返回数据库操作对象
        SQLiteDatabase database=helper.getReadableDatabase();

        ContentValues values=new ContentValues();
        values.put("name","老王");
        values.put("name","老李");
        //返回一个id数据的id,如果插入失败返回-1
        //参数(表名,null,插入的价值)
        long g=database.insert("people", null, values);

        //关闭数据库连接
        database.close();
    }

        //删除数据
        public void delete() {
            //创建数据库对象
            myHelper helper=new myHelper(getBaseContext(),null, null, 2);
            //返回数据库操作对象
            SQLiteDatabase database=helper.getReadableDatabase();

            //参数(表名,删除条件,删除条件的价值)
            //返回受影响的行数i
            int t=database.delete("people","name=?",new String[] {"老刘"});

            //关闭数据库连接
            database.close();
        }

              //修改数据
                public void update() {
                    //创建数据库对象
                    myHelper helper=new myHelper(getBaseContext(),null, null, 2);
                    //返回数据库操作对象
                    SQLiteDatabase database=helper.getReadableDatabase();
                    ContentValues values=new ContentValues();
                    //参数(表名,要修改的值,修改条件,修改条件的值)
                    values.put("name","小红");
                    //返回受影响的行数i
                    //如果要更改全部的数据表可以不指定条件     .update("people",null,null);
                    int t=database.update("people", values,"name=?",new String[] {"老李"});

                }
                //查询数据
                public void query() {
                    //创建数据库对象
                    myHelper helper=new myHelper(getBaseContext(),null, null, 2);
                    //返回数据库操作对象
                    SQLiteDatabase database=helper.getReadableDatabase();
                    /*  参数:
                     *  distinct是否去除重复的数据
                     *  table表名,columns要查询的列
                     *  selection筛选条件规则
                     *  selectionArgs筛选条件规则的值
                     *  grounBy分组
                     *  having分组筛选
                     *  orderBy排序   //升序或降序
                     *  limit分页
                     */
                    //返回查询到的结果集
                    Cursor cursor=database.query(true, "people", new String[] {"name"},null, null,null,null,null,null);
                    //遍历结果集
                    while(cursor.moveToNext()) {

                        String name=cursor.getString(cursor.getColumnIndex("name"));
                        System.out.println("name="+name);
                    }

                    //关闭数据库连接
                    database.close();
                }
}

增删改查小结:

我们要实现sqlite的增删改查就要写一个类继承自SQLiteOpenHelper 类
并重新两个方法一个构造方法 :


   //参数(上下文,数据库文件名称,工厂游标,数据库文件版本号号
    public myHelper(Context context, String name, CursorFactory factory, int version);

    //数据库文件创建成功后调用
     @Override
   public void onCreate(SQLiteDatabase db){};

    //数据库文件需要更新时调用
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){}

让后在主MainActivity中去实例化它,它返回数据库操作对象,并用此数据库操作对象实现数据库的增删改查

你会发现,用此封装好的数据库操作对象,来实现数据库的增删改查,使用一些简单的SQL语句还可以,但是实现复杂的SQL语句就不行了,因此我们就要用到SQL的原生语句,我们使用返回数据库操作象点execSQL(sql语句)方法进行复杂的SQL语句使用;

例:
增删改我们使用 :
execSQL();方法

但是增删改没有返回结果集我们可以使用execSQL()方法
但我们要查询结果返回结果集,我们就不能使用execSQL()方法了,因此我们要使用

例:
查询我们使用 :
db.rawQuery(筛选条件的sql语句,筛选条件的值);
它返回一个查询到的结果集

//遍历结果集
                    while(cursor.moveToNext()) {

                        //db.getString(0);此参数传入列的索引
 //如果传入列的索引麻烦,你还可以使用getColumnIndex("name")方法通过列名 获取列的索引
                        String name=cursor.getString(cursor.getColumnIndex("name"));
                        System.out.println("name="+name);
                    }
                }

sqlite事务

sqlite的增删改查详解
sqlite的增删改查详解

使用原生SQL语句

sqlite的增删改查详解

为什么要关闭SQL的数据库连接问题 :

sqlite的增删改查详解

据上图所示:
每执行一次**helper.getReadableDatabase();或者 helper.getWritableDatabase方法将连接一次数据库
而数据库的连接是有限的,过多的连接会造成资源的浪费,所以每次连接数据库,执行完相应的功能模块之后我们一定要使用关闭数据库方法close();关闭数据库

更加具体的sqlite详解传送门:http://www.runoob.com/w3cnote/android-tutorial-sqlite-intro.html

相关标签: sqlite 增删改查

上一篇: 一词之师

下一篇: 小学国防教育