通过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= ...
随机推荐
- memcached 和 redis 性能测试比对
网上很多关于memcached 和 redis 区别的介绍,大部分都是说redis比memcached支持的数据类型多的话题,而性能比对确很少,我专门针对两者进行了性能测试比对. 测试内容如下: 两者 ...
- 阿里云服务器 :Linux环境下搭建Apache+php+mysql
以前我用的是Windows2012 的服务器,那时候只是抱着玩一玩的心态,所有用的是Windows,但是后来被导师给DISS了,于是决定改服务器的操作系统: (一)下载安装php+mysql+apac ...
- Linux 补丁 的简单使用: 制作补丁,打补丁,撤销补丁
背景: 补丁的使用对于嵌入式开发人员来说,在维护或者开发中都比较方便. 制作补丁: diff - 逐行比较文件. 格式: diff 参数 旧文件/旧文件夹 新文件/新文件夹 (注意顺序 新旧文件夹 ...
- HihoCoder 1245:王胖浩与三角形 三角形边长与面积
#1245 : 王胖浩与三角形 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 王胖浩有一个三角形,三边长为a,b,c.他有特殊的能力,能增加三条边的边长,增加的总长度不能 ...
- 面试题之xml解析?
题目是:用java程序将xml中的数据保存到实体对象中,如何实现? xml如下: <?xml version="1.0" encoding="UTF-8" ...
- java实现下划线转驼峰
废话少说,直接上代码 import java.util.regex.Matcher; import java.util.regex.Pattern; public class Temp { publi ...
- 011、MySQL取14天前Unix时间戳
#取14天前时间戳 SELECT unix_timestamp( DATE_SUB( curdate( ), INTERVAL DAY ) ); 效果如下: 不忘初心,如果您认为这篇文章有价值,认同作 ...
- Ubuntu18.04 LTS 搭建Cassandra集群
环境需求 jdk8 root@node01:~# java -version java version "1.8.0_202" Java(TM) SE Runtime Enviro ...
- Netty 中队列的使用
任务队列中的Task有3种典型使用场景 用户程序自定义的普通任务 此前代码: 参考https://www.cnblogs.com/ronnieyuan/p/12016712.html NettySer ...
- POJ 3250:Bad Hair Day 好玩的单调栈
Bad Hair Day Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 15699 Accepted: 5255 Des ...