概述
文章预览
- 前言
- 一、使用步骤
- 1、MySqliteOpenHelper.java
- 2、MainActivity.java
- activity_main.xml
- 二、测试
前言
SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。SQLite 源代码不受版权限制。
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。
它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。
一、使用步骤
1、MySqliteOpenHelper.java
该类继承SQLiteOpenHelper
抽象类
实现其中的两个方法
onCreate()
:用来初始化数据库
onUpgrade()
:用来更新数据库
我写的这个类使用了单例模式
package com.derry.myproject.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
/**
* MySqliteOpenHelper 工具类 单例模式(1.构造函数私有化 2.对外提供函数)
*/
public class MySqliteOpenHelper extends SQLiteOpenHelper {
// 2.对外提供函数 单例模式
private static SQLiteOpenHelper mInstance;
public static synchronized SQLiteOpenHelper getInstance(Context context) {
if (mInstance == null) {
mInstance = new MySqliteOpenHelper(context, "zzuli.db", null, 1); // 以后想要数据库升级 修改成2 修改成3
}
return mInstance;
}
// 1.构造函数私有化
private MySqliteOpenHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
// 创建表 表数据初始化 数据库第一次创建的时候调用 第二次发现有了 就不会重复创建了,也意味着:次函数只会执行一次
// 数据库初始化时用的
@Override
public void onCreate(SQLiteDatabase db) {
// 创建表:persons表 _id name
// 主键: primary key 必须唯一的
// 自动增长数字:例如:1 2 3 4 5 6 autoincrement
//_id标准的写法(要求1) 只能使用 主键只能是Integer类型的(要求2)
// id 不标准
String sql = "create table persons(_id integer primary key autoincrement, name text)";
db.execSQL(sql);
}
// 数据库升级用的
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
2、MainActivity.java
包含了基本的建表以及增删改查的操作
package com.derry.myproject;
import androidx.appcompat.app.AppCompatActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import com.derry.myproject.db.MySqliteOpenHelper;
// SQLite增删改查
public class MainActivity3 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
}
/**
* 生成DB文件
* @param view
*/
public void createDB(View view) {
SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);
// (helper.getWritableDatabase() / helper.getReadableDatabase()) databases 文件夹的创建,靠下面这句话
SQLiteDatabase readableDatabase = helper.getReadableDatabase();
}
/**
* 查询
* @param view
*/
public void query(View view) {
SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);
SQLiteDatabase db = helper.getReadableDatabase();
// 确保数据库打开成功,才能放心操作,规范
if (db.isOpen()) { // 数据库打开成功 返回true 进入if
// 返回游标
Cursor cursor = db.rawQuery("select * from persons", null);
// 迭代游标 往下面移动来遍历数据
while(cursor.moveToNext()) {
// 偷懒的写法
// int _id = cursor.getInt(0);
// String name = cursor.getString(1);
// 规范写法
int _id = cursor.getInt(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
Log.d("derry", "query: _id:" + _id + " name:" + name);
}
// 一定记得关闭游标 否则耗费性能 规范写法
cursor.close();
// 数据库也要关闭 规范写法
db.close();
}
}
/**
* 插入数据到数据库
* @param view
*/
public void insert(View view) {
SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);
SQLiteDatabase db = helper.getWritableDatabase();
if (db.isOpen()) { // 确保数据库打开成功,才能放心操作,规范
// 插入语句
String sql = "insert into persons(name) values('韭菜盖饭')";
db.execSQL(sql);
// 规范:必须关闭 数据库
db.close();
}
}
/**
* 修改 修改第5条数据 为: 李连杰
* @param view
*/
public void update(View view) {
SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);
SQLiteDatabase db = helper.getWritableDatabase();
if (db.isOpen()) { // 确保数据库打开成功,才能放心操作,规范
// 修改语句
String sql = "update persons set name =? where _id =?";
db.execSQL(sql, new Object[]{"张国荣", 5});
// 规范:必须关闭 数据库
db.close();
}
}
/**
* 删除 第4条数据
* @param view
*/
public void delete(View view) {
SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);
SQLiteDatabase db = helper.getWritableDatabase();
if (db.isOpen()) { // 确保数据库打开成功,才能放心操作,规范
// 删除语句
String sql = "delete from persons where _id =?";
db.execSQL(sql, new Object[]{4});
// 规范:必须关闭 数据库
db.close();
}
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity3"
android:orientation="vertical">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="生成DB文件"
android:onClick="createDB"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查询"
android:onClick="query"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="插入"
android:onClick="insert"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="修改"
android:onClick="update"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除"
android:onClick="delete"
/>
</LinearLayout>
二、测试
最后
以上就是鳗鱼眼神为你收集整理的安卓开发之SQLite数据库的简单使用前言一、使用步骤二、测试的全部内容,希望文章能够帮你解决安卓开发之SQLite数据库的简单使用前言一、使用步骤二、测试所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复