Android操作数据库SQLite使用sql语句基本操作

1:自定义自己的SQLiteOpenHelper

public class DBHelper extends SQLiteOpenHelper {

    //重写SQLiteOpenHelper的有参构造方法
public DBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, "my.db", null, 1);
//第一个参数为Context对象,第二个参数为数据库名称,第三个设置为null,第四个为sql版本号
} @Override
public void onCreate(SQLiteDatabase db) {
//创建一张数据表并执行
String sql="create table person(id int,name varchar(10))";
db.execSQL(sql);
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion{ }
}

2:自定义一个javabean Person

public class Person {
private String id;
private String name; public Person(String id, String name) {
this.id = id;
this.name = name;
} public Person() {
} public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}

3:修改activity_main.xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity"> <Button
android:id="@+id/inserttButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="插入数据"
android:textSize="16sp" /> <Button
android:id="@+id/deletetButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除数据"
android:textSize="16sp" /> <Button
android:id="@+id/updateButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="修改数据"
android:textSize="16sp" /> <Button
android:id="@+id/querytButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查询数据"
android:textSize="16sp" />
</LinearLayout>

4:在MainActivity写

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button insertButton;
private Button deletetButton;
private Button updateButton;
private Button queryButton;
private SQLiteDatabase db;
private DBHelper dbHelper; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new DBHelper(MainActivity.this, "", null, 1);
init();
} public void init() {
insertButton = findViewById(R.id.inserttButton);
deletetButton = findViewById(R.id.deletetButton);
updateButton = findViewById(R.id.updateButton);
queryButton = findViewById(R.id.querytButton); insertButton.setOnClickListener(this);
deletetButton.setOnClickListener(this);
updateButton.setOnClickListener(this);
queryButton.setOnClickListener(this);
} @Override
public void onClick(View v) {
db=dbHelper.getWritableDatabase();
switch (v.getId()) { //添加
case R.id.inserttButton:
db = dbHelper.getWritableDatabase();
db.beginTransaction();
try{ db.execSQL("insert into person(id,name) values (?,?)", new String[]{"11", "黑夜"});
db.setTransactionSuccessful();
} finally {
db.endTransaction();
} Toast.makeText(MainActivity.this, "数据插入成功!", Toast.LENGTH_LONG).show();
db.close();
break; //删除 case R.id.deletetButton:
db = dbHelper.getWritableDatabase();
db.beginTransaction(); try{
db.execSQL("delete from person where name=?", new String[]{"黑夜"});
db.setTransactionSuccessful();
} finally {
db.endTransaction();
} Toast.makeText(MainActivity.this, "删除成功!", Toast.LENGTH_LONG).show();
db.close();
break; //更新
case R.id.updateButton:
db = dbHelper.getWritableDatabase();
db.beginTransaction();
try{
db.execSQL("update person set name=? where id=?", new String[]{"晓霞", "11"});
db.setTransactionSuccessful();
} finally {
db.endTransaction();
} Toast.makeText(MainActivity.this, "修改成功!", Toast.LENGTH_LONG).show();
db.close();
break; //查询
case R.id.querytButton:
db=dbHelper.getReadableDatabase();
Cursor cursor=db.rawQuery("select * from person where name=?",new String[]{"黑夜"});
ArrayList<Person> list=new ArrayList<>(); if (cursor!=null){
cursor.moveToFirst();
while(cursor.moveToNext()){
String id=cursor.getString(cursor.getColumnIndex("id"));
String name=cursor.getString(cursor.getColumnIndex("name"));
list.add(new Person(id,name));
}
} cursor.close();
db.close();
System.out.println(list.toString());
Toast.makeText(MainActivity.this,list.toString(),Toast.LENGTH_LONG).show();
break;
}
}
}

注意

在涉及到数据库的添加,修改,删除都要考虑到事务问题,可以参考下我的考虑流程:

//获取到数据库对象
try{
db.beginTransaction();//开启事务
try{db.endTransaction();
db.execSQL("sql语句");
db.setTransactionSuccessful();//标记事务成功
} finally{
db.endTransaction();//提交事务
db.close();//关闭数据库连接
}
}

android 使用SQLite的基本操作的更多相关文章

  1. Android 的 Sqlite基本操作

    在 SQL 数据库中保存数据 使用数据库 将数据保存到数据库对于重复或结构化数据(比如契约信息)而言是理想之选. 本课程假定您基本熟悉 SQL 数据库并且可帮助您开始在 Android 中使用 SQL ...

  2. Android的SQLite基本操作

    涉及SQLite的增删改查,结果用log显示 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...

  3. android 一个SQLite数据库多个数据表的基本使用框架 (带demo)

    android 一个SQLite数据库多个数据表(带demo) 前言        demo演示        一.搭建        二.建立实体类        三.建立数据库操作类        ...

  4. Android之SQLite数据存储

    一.SQLite保存数据介绍 将数据库保存在数据库对于重复或者结构化数据(比如契约信息)而言是理想之选.SQL数据库的主要原则之一是架构:数据库如何组织正式声明.架构体现于用于创建数据库的SQL语句. ...

  5. android安卓Sqlite数据库实现用户登录注册

    看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!建立一个类 并继承SQLiteOpenHelper public ...

  6. Android中SQLite数据库小计

    2016-03-16 Android数据库支持 本文节选并翻译<Enterprise Android - Programing Android Database Applications for ...

  7. android 对sqlite数据库的增删改查等各种操作

    转载:http://blog.csdn.net/vrix/article/details/6717090 package com.sqlite.main; import java.io.File; i ...

  8. Android学习---SQLite数据库的增删改查和事务(transaction)调用

    上一篇文章中介绍了手工拼写sql语句进行数据库的CRUD操作,本文将介绍调用sqlite内置的方法实现CRUD操作,其实质也是通过拼写sql语句. 首先,创建一个新的android项目: 其次,查看代 ...

  9. android数据库SQLite的设计模式

    Dao设计模式可能是使用最多的数据库的设计模式其基本思路是将数据库操作的代码 与设计代码分离以便于维护和升级.具体的实现方法是使用包,然后在设计代码中调 用数据库的操作代码,dao设计模式需要创建5个 ...

随机推荐

  1. FileUtils常用方法 - commons-io常用工具类

    FileUtils常用常量 public static final long ONE_KB = 1024; public static final BigInteger ONE_KB_BI = Big ...

  2. Java学习之 多态 Polymorphism

    转自:http://www.cnblogs.com/mengdd/archive/2012/12/25/2832288.html 多态的概念 多态==晚绑定. 不要把函数重载理解为多态. 因为多态是一 ...

  3. Acwing 883高斯消元法的运用

    Acwing 883高斯消元法的运用 解线性方程组 Acwing 883 输入一个包含 n 个方程 n 个未知数的线性方程组. 方程组中的系数为实数. 求解这个方程组. 下图为一个包含 m 个方程 n ...

  4. [转]VRRP协议详解

    原文地址:VRRP协议详解 文中涉及缩略语 缩略语 英文全名 中文解释 VRRP Virtual Router Redundancy Protocol 虚拟路由器冗余协议 NQA Network Qu ...

  5. 小程序es6

    在小程序中使用ES6的新特性ECMAScript 6(简称ES6)是于2015年6月正式发布的JavaScript语言的标准,正式名为ECMAScript 2015(ES2015). 小程序在很久之前 ...

  6. OpenCV 传统分割测试

    github官网源文件:https://github.com/opencv/opencv/tree/master/samples/python 最好是先克隆整个仓库下来,再测试里面的:floodfil ...

  7. Vue Router路由导航及传参方式

    路由导航及传参方式 一.两种导航方式 ①:声明式导航 <router-link :to="..."> ②:编程式导航 router.push(...) 二.编程式导航参 ...

  8. 关于electron-vue打包后静态视频文件无法正常加载的问题解决方法

    最近在使用electron-builder构建vue项目的时候发现在生产模式下视频可以正常加载并显示,但是一旦打包到开发环境下,视频就读取不出来了,控制台也并没有报错 一开始博主以为是路径问题,在将路 ...

  9. Linux - 设置帮助文件为中文

    前言 当我们执行某个命令的 --h 或者  --help 时,默认输出的都是英文,接下来我们来说下如何将所有帮助文件显示成中文哦! 设置系统默认语言为中文 对应每个shell而言,重启后会变成英文,所 ...

  10. vue.js框架图片上传组件

    html: <div id="app"> <div class="hello"> <div class="upload& ...