通过SQL语句操作Sqlite数据库
一、数据库的创建
数据库版本为1
//Ctrl+Shift+U:大写
public static final String DATABASE_NAME ="zzw.db";
public static final int VERSION_CODE =1;
public static final String TABLE_NAME ="employee";
DatabaseHelper.java
package com.example.databasedemo; import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log; import androidx.annotation.Nullable; public class DatabaseHelper extends SQLiteOpenHelper { private static final String TAG="DatabaseHelper"; /**
*
* @ context 上下文
* @ name 数据库名称
* @ factory 游标工厂:可以移动的指针,默认为null
* @ version 版本号
*/
public DatabaseHelper(@Nullable Context context) {
super(context, Constants.DATABASE_NAME, null, Constants.VERSION_CODE);
} @Override
public void onCreate(SQLiteDatabase db) {
//第一次创建数据库时调用
//创建时的回调
Log.d(TAG,"创建数据库....");
//创建数据库表
String sql ="create table "+Constants.TABLE_NAME+"(_id integer,name varchar,age integer,salary integer)";
db.execSQL(sql);
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //升级数据库时的回调
Log.d(TAG,"升级数据库....");
//
String sql;
switch (oldVersion){
case 1:
sql ="alter table "+Constants.TABLE_NAME+" add phone integer";
db.execSQL(sql);
break;
case 2:
break;
} }
}
第一次运行,无数据库时的文件结构

创建数据库
//创建数据库
DatabaseHelper helper =new DatabaseHelper(this);
helper.getWritableDatabase();
创建表
public void onCreate(SQLiteDatabase db) {
//第一次创建数据库时调用
//创建时的回调
Log.d(TAG,"创建数据库....");
//创建数据库表
String sql ="create table "+Constants.TABLE_NAME+"(_id integer,name varchar,age integer,salary integer)";
db.execSQL(sql);
}

创建数据库后的文件结构

将zzw.db文件导出,并用SQLiteExpert打开

与我们要创建的字段数一致
二、数据库的升级
对数据库进行升级
修改版本号为2
//Ctrl+Shift+U:大写
public static final String DATABASE_NAME ="zzw.db";
public static final int VERSION_CODE =2;
public static final String TABLE_NAME ="employee";
升级数据库
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//升级数据库时的回调
Log.d(TAG,"升级数据库....");
//
String sql;
switch (oldVersion){
case 1:
sql ="alter table "+Constants.TABLE_NAME+" add phone integer";
db.execSQL(sql);
break;
case 2:
break;
}
}

成功添加了phone字段

三、Dao的增删改查(SQL语句实现)
进行测试
MainActivity.java
package com.example.databasedemo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建数据库
DatabaseHelper helper =new DatabaseHelper(this);
helper.getWritableDatabase();
Dao dao =new Dao(getApplicationContext());
// dao.insert();
// dao.update();
// dao.query();
dao.delete();
}
}
Dao.java
package com.example.databasedemo; import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log; /**
* 这个类用于对数据库的增删改查
*/
public class Dao { private final DatabaseHelper mHelper;
private static final String TAG="Dao";
public Dao(Context context){ //创建数据库
//Ctrl+Alt+F,之后加回车,创建成员变量
mHelper = new DatabaseHelper(context); } public void insert(){
SQLiteDatabase db = mHelper.getWritableDatabase();
String sql="insert into "+Constants.TABLE_NAME+"(_id,name,age,salary,phone) values(?,?,?,?,?)";
Object []obj={1,"zzw",19,2,1234567890};
db.execSQL(sql,obj);
db.close();
} public void delete(){
SQLiteDatabase db = mHelper.getWritableDatabase();
String sql="delete from "+Constants.TABLE_NAME+" where name = ?";
Object []obj={"zzw"};
db.execSQL(sql,obj);
db.close();
} public void update(){
SQLiteDatabase db = mHelper.getWritableDatabase();
String sql="update "+Constants.TABLE_NAME+" set salary= ? where name = ?";
Object []obj={3,"zzw"};
db.execSQL(sql,obj);
db.close();
} public void query(){
SQLiteDatabase db = mHelper.getWritableDatabase();
String sql="select * from "+Constants.TABLE_NAME+" where name = ?";
String []obj={"zzw"};
Cursor cursor = db.rawQuery(sql, obj);
while (cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
String age = cursor.getString(cursor.getColumnIndex("age"));
Log.d(TAG,"名字:"+name+"年龄:"+age);
}
cursor.close();
db.close();
}
}
插入数据

修改数据

查看数据

删除数据

通过SQL语句操作Sqlite数据库的更多相关文章
- Android中SQLite数据库操作(1)——使用SQL语句操作SQLite数据库
下面是最原始的方法,用SQL语句操作数据库.后面的"Android中SQLite数据库操作(2)--SQLiteOpenHelper类"将介绍一种常用的android封装操作SQL ...
- 用SQL语句操作Sqlite数据库的示例代码
import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.databa ...
- Electron中使用sql.js操作SQLite数据库
推荐sql.js——一款纯js的sqlite工具. 一.关于sql.js sql.js(https://github.com/kripken/sql.js)通过使用Emscripten编译SQLite ...
- 通过Sql语句控制SQLite数据库增删改查
person类属性有Intenger id,String name,Intenger age,相应的构造方法和set get方法. package com.xh.tx.dao; import jav ...
- Django中使用mysql数据库并使用原生sql语句操作
Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件mysql数据库,版本5.7 ...
- 在myeclipse中配置DB Driver(数据库用MySql),并在myeclipse执行sql语句操作
在myeclipse中配置DB Driver(数据库用MySql),并在myeclipse执行sql语句操作 MyEclipse6.5 , mysq驱动jar包为mysql-connector ...
- 043:Django使用原生SQL语句操作数据库
Django使用原生SQL语句操作数据库 Django配置连接数据库: 在操作数据库之前,首先先要连接数据库.这里我们以配置 MySQL 为例来讲解. Django 连接数据库,不需要单独的创建一个连 ...
- Java操作Sqlite数据库-jdbc连接
Java操作Sqlite数据库步骤: 1. 导入Sqlite jdbc 本文使用sqlite-jdbc-3.7.2.jar,下载地址 http://pan.baidu.com/s/1kVHAGdD 2 ...
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...
随机推荐
- angularJS MVVM
- centos 安装 memcached
centos 安装 memcached 1. 安装依赖: libeventyum install libevent-devel 2. 获取最新版本wget http://memcached.org/l ...
- express 配置 https 服务 ( 以阿里云服务器为例), 探索一周终于搞定
首先最重要的是 你要明白 https接口的接收或者发送 的形式 是 https://域名:端口号 而不是 https://ip:端口号 一,首先,去阿里云注册免费ssl证书 1,在搜索框 ...
- 关于Android 的内存泄露及分析(转)
一. Android的内存机制Android的程序由Java语言编写,所以Android的内存管理与Java的内存管理相似.程序员通过new为对象分配内存,所有对象在java堆内分配空间:然而对象的释 ...
- 013、Java中int类型转换byte
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- jmeter非GUI模式命令
一.如果没有.jtl文件,运行如下命令: jmeter -n -t baidu.jmx -l result.jtl 以非GUI形式运行Jmeter脚本jmeter -n -t baidu.jmx -l ...
- 吴裕雄--天生自然java开发常用类库学习笔记:观察者设计模式
import java.util.* ; class House extends Observable{ // 表示房子可以被观察 private float price ;// 价钱 public ...
- P1042 字符统计
P1042 字符统计 转跳点:
- Python3 格式化输出
Python3 格式化输出 今天用字符串功能的时候,我突然忘记了格式化输出的方式X﹏X.所以赶紧恶补一下. 1.打印字符串 print("My name is %s" %(&quo ...
- 《Java并发编程的艺术》并发编程的基础(四)
一.线程简介 1.线程的概念 系统运行的最小单元 2.为何使用多线程 更好地利用系统资源(处理器多核心),提高响应速度. 3.线程的状态 NEW(创建状态) RUNABLE(运行状态,系统调度,争抢时 ...