Android SharePreferences与数据库SQLite存储实现方法介绍


当前第2页 返回上一页

XML文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:id="@+id/btn_database_create"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="创建数据库"
            android:textSize="17sp"/>
        <Button
            android:id="@+id/btn_database_delete"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="删除数据库"
            android:textSize="17sp"/>
    </LinearLayout>
    <TextView
        android:id="@+id/tv_database"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="17sp"/>
</LinearLayout>

java代码

public class DatabaseActivity extends AppCompatActivity implements View.OnClickListener {
    private TextView tv_database;
    private String mDatabaseName;
    private String desc;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_database);
        tv_database = findViewById(R.id.tv_database);
        findViewById(R.id.btn_database_create).setOnClickListener(this);
        findViewById(R.id.btn_database_delete).setOnClickListener(this);
//        生成一个测试数据库的完整路径
        mDatabaseName = getFilesDir() + "/test.db";
    }
    @Override
    public void onClick(View view) {
        switch (view.getId()){
//            创建或打开数据库,数据库如果不存在则创建
            case R.id.btn_database_create:
               SQLiteDatabase db = openOrCreateDatabase(mDatabaseName, Context.MODE_PRIVATE,null);
                desc = String.format("数据库%s创建%s",db.getPath(),(db != null) ? "成功":"失败");
                tv_database.setText(desc);
                break;
            case R.id.btn_database_delete:
                //删除数据库
                boolean result = deleteDatabase(mDatabaseName);
                desc = String.format("数据库%s删除%s",mDatabaseName,result? "成功":"失败");
                tv_database.setText(desc);
                break;
        }
    }
}

四、数据库帮助器SQLiteOpenHelper

SQLiteOpenHelper是Android提供的数据库辅助工具,用于指导开发者进行SQLite的合理使用。

使用步骤:

  • 新建继承SQLiteOpenHelper的数据库操作类,提示重写onCreate和onUpgrade两个方法。
  • 封装保证数据库安全的必要方法。
  • 提供对表记录进行增加、删除、修改、查询的操作方法。

例:添加到数据库中

创建database包,包下创建java类

public class UserDBHelper extends SQLiteOpenHelper {
    private static final String DB_NAME = "user.db";
    private static final String TABLE_NAME = "user_info";
    private static final int DB_VERSION = 1;
    private static UserDBHelper mHelper = null;
    private SQLiteDatabase mRDB = null;
    private SQLiteDatabase mWDB = null;
    private UserDBHelper(Context context){
        super(context,DB_NAME,null,DB_VERSION);
    }
//    利用单例模式获取数据库帮助器的唯一实例
    public static UserDBHelper getInstance(Context context){
        if(mHelper == null){
            mHelper = new UserDBHelper(context);
        }
        return mHelper;
    }
//    打开数据库的读连接
    public SQLiteDatabase openReadLink(){
        if(mRDB == null || !mRDB.isOpen()){
            mRDB = mHelper.getReadableDatabase();
        }
        return mRDB;
    }
//    打开写连接
    public SQLiteDatabase openWriteLink(){
        if(mWDB == null || !mWDB.isOpen()){
            mWDB = mHelper.getWritableDatabase();
        }
        return mWDB;
    }
//    关闭数据库连接
    public void closeLink(){
        if(mRDB != null && mRDB.isOpen()){
            mRDB.close();
            mRDB = null;
        }
        if(mWDB != null && mWDB.isOpen()){
            mWDB.close();
            mWDB = null;
        }
    }
//    创建数据库,执行建表语句
    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "CREATE TABLE IF NOT EXISTS "+TABLE_NAME+"(" +
                "id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +
                "name VARCHAR NOT NULL);";
        db.execSQL(sql);
    }
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
    }
    public long insert(User user){
        ContentValues values = new ContentValues();
        values.put("name",user.name);
        return mWDB.insert(TABLE_NAME,null,values);
    }
}

XML文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="5dp">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tv_name"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center"
            android:text="姓名"
            android:textSize="17sp"/>
        <EditText
            android:id="@+id/et_name"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:hint="请输入姓名"
            android:inputType="text"
            android:textSize="17sp"/>
    </LinearLayout>
    <Button
        android:id="@+id/btn_add"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="添加"
        android:textSize="17sp"/>
</LinearLayout>

Userjava类

public class User {
    public int id;
    public String name;
    public User(){
    }
    public User(String name){
        this.name = name;
    }
}

Activity java类

public class SQLiteHelperActivity extends AppCompatActivity implements View.OnClickListener {
    private TextView et_name;
    private UserDBHelper mHelper;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sqlite_helper);
        et_name = findViewById(R.id.et_name);
        findViewById(R.id.btn_add).setOnClickListener(this);
    }
    @Override
    protected void onStart() {
        super.onStart();
//        打开数据库帮助器的实例
        mHelper = UserDBHelper.getInstance(this);
//        打开数据库帮助器的读写连接
        mHelper.openWriteLink();
        mHelper.openReadLink();
    }
    @Override
    protected void onStop() {
        super.onStop();
        mHelper.closeLink();
    }
    @Override
    public void onClick(View view) {
        String name = et_name.getText().toString();
        User user = null;
        switch (view.getId()){
            case R.id.btn_add:
//                以下声明一个用户信息对象,并填写它的各字段值
                user = new User(name);
                if(mHelper.insert(user)>0){
                    Toast.makeText(this,"添加成功",Toast.LENGTH_SHORT).show();
                }
                break;
        }
    }
}

到此这篇关于Android SharePreferences与数据库SQLite存储实现方法介绍的文章就介绍到这了,更多相关Android SharePreferences内容请搜索


标签:SQLite

返回前面的内容

相关阅读 >>

linux中安装部署docker管理工具drone全攻略

python 连接各类主流数据库的实例代码

Sqlite 入门教程一 基本控制台(终端)命令

android中listview使用示例介绍

android 中自定义contentprovider与contentobserver的使用简单实例

直接可用的android studio学生信息管理系统

python操作Sqlite数据库的方法详解

django数据库(Sqlite)基本入门使用教程

android基于Sqlite实现注册和登录功能

.net数据库操作框架sqlsugar的简单入门

更多相关阅读请进入《Sqlite》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...