一、数据库的创建

数据库版本为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. 防止SQL注入的登录页面

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/T ...

  2. php 键值数组搜索查询

    php  键值数组查询 ,需要先将其转换为纯数组,然后才能用in_array 进行搜索. $arr_combos = [ ['id' => '1001', 'value' => 'zs' ...

  3. 二 Hibernate 改写学生管理系统的业务功能

    public class StudentDaoImpl implements StudentDao { @Override /** * 查询所有学生 * * @throws SQLException ...

  4. jmeter之http请求用csv读取中文乱码

    jmeter3.2版本中CSV Data Set Config从本地读取静态文件的时候,遇到中文乱码的解决方式如下: CSV Data Set Config设置 http请求数据显示乱码 把txt文档 ...

  5. SciPy 常量

    章节 SciPy 介绍 SciPy 安装 SciPy 基础功能 SciPy 特殊函数 SciPy k均值聚类 SciPy 常量 SciPy fftpack(傅里叶变换) SciPy 积分 SciPy ...

  6. vs2010编译C++ 友元函数

    // CTest.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include &l ...

  7. c语言查漏补缺

    getchar:执行getchar()函数时,首先从输入缓存区读取字符,直到输入缓存区为空时才等待从键盘继续输入.scanf()之间不要有printf操作. 逗号表达式 a= (++a,1,2),只取 ...

  8. RAM和ROM的区别

    区别如下: 1.概念 RAM(random access memory)即随机存储内存,这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序.ROM(Read-Only Memory)即 ...

  9. canon 打印机 连接不上 netgear 路由器

    解决方法很简单,只要把信道设置到 10以内即可.

  10. ubuntu18.04下安装oh-my-zsh

    安装 sudo apt-get install zsh wget --no-check-certificate https://github.com/robbyrussell/oh-my-zsh/ra ...