通过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= ...
随机推荐
- [转载]JDK自带的实用工具——native2ascii.exe
做Java开发的时候,常常会出现一些乱码,或者无法正确识别或读取的文件,原因是编码方式的不一致.native2ascii是sun java sdk提供的一个工具.用来将别的文本类文件(比如*.txt, ...
- Problem A: Assembly Required K路归并
Problem A: Assembly Required Princess Lucy broke her old reading lamp, and needs a new one. The cast ...
- jenkins -- 邮件的配置
参考博文:https://blog.csdn.net/lykio_881210/article/details/81135769 https://www.jianshu.com/p/29a29ce6e ...
- Python 使用 requests 模块发送请求的使用及封装
一.requests 模块基本使用 1.准备接口的URL.请求参数.请求头 # 1. 构造注册.登录.充值请求的url register_url = "注册url" login_u ...
- 011.Oracle数据库分页,取前10条数据
SELECT ATA FROM LM_FAULT WHERE ( OCCUR_DATE BETWEEN to_date( '2017-05-01', 'yyyy-MM-DD' ) AND to_dat ...
- 利用ZXing.Net生成和识别二维码
ZXing.Net:ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库. github:https://github.com/micjahn/ZXing.Net 直接将字符 ...
- 解决物理机U盘安装Kali Linux2018.1,光驱无法加载问题
1.无效的方法: (1)执行 df -m,然后查看U盘设备是否挂载到了/media,导致cd-rom不能被挂载,执行 umount /media. (2)在光驱加载安装界面,把U盘拔下换到电脑的另外 ...
- Java多线程之以7种方式让主线程等待子线程结束
记一次主线程等待子线程结束的多种方法的学习 在学习多线程时,最开始遇到的问题其实是"计算子线程运行时间",写到最后发现本文和标题更为符合,但是仍然基于问题:"在主线程中获 ...
- 每天一点点之python - 基础语法
1.字符串的拼接 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125) 输出结果如下: 可以通过和c语言一样,也可以通过format()来实现 2.简单运 ...
- C#验证码 使用GDI绘制验证码
首先展示一下效果图如下: C#中的GDI特别方便,很多方法我们只要简单的调用就可以实现很复杂的功能.具体实现过程如下: 首先创建一个windows窗体应用(测试使用,实际开发winform程序时在需要 ...