一、数据库的创建

数据库版本为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数据库的更多相关文章

  1. Android中SQLite数据库操作(1)——使用SQL语句操作SQLite数据库

    下面是最原始的方法,用SQL语句操作数据库.后面的"Android中SQLite数据库操作(2)--SQLiteOpenHelper类"将介绍一种常用的android封装操作SQL ...

  2. 用SQL语句操作Sqlite数据库的示例代码

    import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.databa ...

  3. Electron中使用sql.js操作SQLite数据库

    推荐sql.js——一款纯js的sqlite工具. 一.关于sql.js sql.js(https://github.com/kripken/sql.js)通过使用Emscripten编译SQLite ...

  4. 通过Sql语句控制SQLite数据库增删改查

    person类属性有Intenger id,String name,Intenger  age,相应的构造方法和set get方法. package com.xh.tx.dao; import jav ...

  5. Django中使用mysql数据库并使用原生sql语句操作

    Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件mysql数据库,版本5.7 ...

  6. 在myeclipse中配置DB Driver(数据库用MySql),并在myeclipse执行sql语句操作

    在myeclipse中配置DB Driver(数据库用MySql),并在myeclipse执行sql语句操作 MyEclipse6.5    ,  mysq驱动jar包为mysql-connector ...

  7. 043:Django使用原生SQL语句操作数据库

    Django使用原生SQL语句操作数据库 Django配置连接数据库: 在操作数据库之前,首先先要连接数据库.这里我们以配置 MySQL 为例来讲解. Django 连接数据库,不需要单独的创建一个连 ...

  8. Java操作Sqlite数据库-jdbc连接

    Java操作Sqlite数据库步骤: 1. 导入Sqlite jdbc 本文使用sqlite-jdbc-3.7.2.jar,下载地址 http://pan.baidu.com/s/1kVHAGdD 2 ...

  9. 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

    1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...

随机推荐

  1. 103、Java中String类之compareTo()方法

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  2. arm linux 移植 x265

    背景 本来想着把 x265编译到ffmpeg里面,搞定了x265的编译:但是一直报ERROR: x265 not found using pkg-config这个错误,我按照网上的资料,查看了ffbu ...

  3. POJ 3274:Gold Balanced Lineup 做了两个小时的哈希

    Gold Balanced Lineup Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 13540   Accepted:  ...

  4. Rabbitmq与spring整合之重要组件介绍——rabbitAdmin组件

    rabbitAdmin组件是一个管理组件,主要是用户通过该组件进行rabbitmq的队列交换器虚拟主机等等进行操作.这里面有些教程说不用声明可以直接绑定,但是本博主运行时,不生命情况下就会报错,可能是 ...

  5. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'解决

    用XAMPP装装好mysql之后,mysql -uroot 连不上,报这个错误:   ERROR 2002 (HY000): Can't connect to local MySQL server t ...

  6. GoJS实例3

    复制如下内容保存到空白的.html文件中,用浏览器打开即可查看效果 <!DOCTYPE html> <html> <head> <meta charset=& ...

  7. IIS7/8 HTTP Error 500.19 错误 0x80070021 错误代码:0x8007000d

    nopCommerce versions 4.20 的安装环境是 dotnet-hosting-2.2.0-win.exe .net core项目iis10上出现 HTTP 错误 500.19,错误代 ...

  8. 吴裕雄--天生自然java开发常用类库学习笔记:观察者设计模式

    import java.util.* ; class House extends Observable{ // 表示房子可以被观察 private float price ;// 价钱 public ...

  9. DevOps 教程

    DevOps是一种研发文化,它促进开发团队和运维团队之间更好地协作,以自动化和可重复的方式,更快地将代码部署到生产环境中.DevOps是development和operations两个单词的组合. D ...

  10. JWT跨域身份验证解决方案

    JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案.本文介绍JWT的原理和用法. 1. 当前跨域身份验证的问题 Internet服务无法与用户身份验证分开.一般过程如下.1.用户 ...