通过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= ...
随机推荐
- 084、Java数组之实现数组复制
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- python机器学习基本概念快速入门
//2019.08.01机器学习基础入门1-21.半监督学习的数据特征在于其数据集一部分带有一定的"标记"和或者"答案",而另一部分数据没有特定的标记,而更常见 ...
- win10安装mysql过程&&链接过程&&备份和导入数据&&grant命令
win10安装mysql过程&&链接过程&&备份和导入数据&&grant命令 一 .安装 一开始在mysql官网(https://www.mysql ...
- 第1节 IMPALA:6、yum源制作过程
impala的安装:第一步:下载5个G的安装包,并且上传linux,解压第二步:安装httpd的服务,并启动,访问httpd就是访问我们linux的 /var/www/html这个路径下面的东西第三步 ...
- Aop配置时候的一些问题
编写切面,并在ApplicationContest.xml 中相关AOP及切面的配置完全正确的情况下,运行报错如下: Exception in thread "main" org. ...
- Arch-base-vs-iso
Arch-base-vs-iso 通常绝大多数的Linux分发版的iso镜像本身(*.iso文件都有约2Gb上下)都可以直接启动电脑并运行完整的Linux桌面系统. 极少数的Linux发行版仅提供命令 ...
- 17. Getting to the essence of things
17.Getting to the essence of things.抓住事情的本质 From today on, I think I should keep a diary. To the CCU ...
- php绕过open_basedir设置
原理关于open_basedir open_basedir是php.ini中的一个配置选项 它可将用户访问文件的活动范围限制在指定的区域, 假设open_basedir=/home/ ...
- MapReduce On Yarn的执行流程
1.概述 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序. Yarn的架构如下图所示: ...
- Web基础之日志
Web基础之日志 日志在企业开发中有着不可或缺的作用,它可以用以记录用户操作.系统运行状态和错误信息.日志记录的好坏直接关系到系统出现问题时定位的速度. 最开始的日志一般使用log4j,后来s ...