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
相关阅读 >>
android 中自定义contentprovider与contentobserver的使用简单实例
更多相关阅读请进入《Sqlite》频道 >>

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