Android 数据存储方式(SQLite)

SQLite是Android非常重要的数据存储方式,但是它的操作非常简单,今天就给大家简单讲一下:

先写一个DBHelper类,用来创建数据库表

package com.zking.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

/**
 * Created by Administrator on 2017/6/25 0025.
 */

public class DbHelper extends SQLiteOpenHelper{

    /**
     *
     * @param context    上下文
     * @param name        数据库的名字,“文件名.db”
     * @param factory     数据库工厂,null
     * @param version    数据库版本
     */
    public DbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        Log.i("test","构造方法");
    }

    //使用该方法:创建表
    //只会调用一次
    @Override
    public void onCreate(SQLiteDatabase db) {
        Log.i("test","创建表");
        db.execSQL("create table login(uid integer primary key autoincrement,uname,upass)");
    }

    //数据库版本  低-->高
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.i("test","升级数据库版本");
    }
//    @Override
//    public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//        super.onDowngrade(db, oldVersion, newVersion);
//    }
}

接下来讲一下如何写sql语句,以及如何调用DBHelper类

package com.zking.administrator.g160628_android16_sqlite;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import com.zking.db.DbHelper;

public class MainActivity extends AppCompatActivity {

    private SQLiteDatabase sqLiteDatabase;

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

        DbHelper dbHelper=new DbHelper(this,"G160628.db",null,2);//第二个参数是数据库的名字
        sqLiteDatabase = dbHelper.getWritableDatabase();
    }

    public void operation(View view){
        String uname=et_main_uname.getText().toString();
        String upass=et_main_upass.getText().toString();
        //添加 1
//        ContentValues contentValues=new ContentValues();
//        contentValues.put("uname",uname);
//        contentValues.put("upass",upass);
//        contentValues.putNull("uid");
//        sqLiteDatabase.insert("login","uname",contentValues);
          //添加2
//        for (int i = 0; i <100 ; i++) {
//            sqLiteDatabase.execSQL("insert into login(uname,upass) values('小"+i+"','123')");
//        }

        //修改
//        ContentValues contentValues=new ContentValues();
//        contentValues.put("uname",uname);
//        contentValues.put("upass",upass);
//        sqLiteDatabase.update("login",contentValues,"uid=?",new String[]{1+""});//因为需要一个String类型的数组,所以我们在使用int类型的数据时需要拼接一个“”

        //删除
        //sqLiteDatabase.delete("login","uid=?",new String[]{102+""});

        //查询
//        sqLiteDatabase.query()
        int pageNo=2;
        int pageSize=3;
        Cursor cursor=sqLiteDatabase.rawQuery("select * from login limit ?,?",new String[]{((pageNo-1)*pageSize)+"",pageSize+""});//查询时需要使用游标接收
        while (cursor.moveToNext()){
            int uid=cursor.getInt(cursor.getColumnIndex("uid"));
            String name=cursor.getString(cursor.getColumnIndex("uname"));
            String pass=cursor.getString(cursor.getColumnIndex("upass"));
            Log.i("test",uid+" "+name+" "+pass);
        }


        Toast.makeText(this, "操作OK", Toast.LENGTH_SHORT).show();
    }
}

 

 

发布了52 篇原创文章 · 获赞 47 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/zhangkaidsy/article/details/74852563