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. .NET 元数据概述

    元数据是一种二进制信息,用以对存储在公共语言运行库可移植可执行文件 (PE) 文件或存储在内存中的程序进行描述.将您的代码编译为 PE 文件时,便会将元数据插入到该文件的一部分中,而将代码转换为 Mi ...

  2. 【设计模式】java设计模式目录

    1.创建型模式 JDK1.5枚举Singleton    单例模式 AbstractFactory  工厂方法模式    简单工厂模式 Builder Prototype 2.结构型 java设计模式 ...

  3. 网页前端video播放m3u8(HLS)

    网页前端video播放m3u8(HLS) HLS (HTTP Live Streaming)是Apple公司研发的流媒体传输技术,包括一个m3u8的索引文件.多个ts分片文件和key加密串文件.这项技 ...

  4. 刷题-力扣-122. 买卖股票的最佳时机 II

    122. 买卖股票的最佳时机 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell ...

  5. IP掩码的作用

    IP地址&IP掩码==网段,即,与上掩码后相同的IP属于同一网段.

  6. linux centos7 移动文件到指定目录

    2021-08-26 在 centos7 环境下怎么移动一个文件到其他的目录下呢? 使用命令  mv 文件名 指定目录  即可完成该操作. 那么怎么将一个文件夹下的内容移动到另一个文件夹下呢?比如有时 ...

  7. CPU内部结构域寄存器

    CPU内部结构域寄存器   64位和32位系统区别: 寄存器是CPU内部最基本的存储单元. CPU对外是通过总线(地址.控制.数据)来和外部设备交互的,总线的宽度是8位,同时CPU的寄存器也是8位,那 ...

  8. 超实用的idea技巧,windows技巧,用于节省时间!

    进去https://zhangjzm.gitee.io/self_study 找平常积累,或者其它的

  9. ReScript 与 TypeScript,谁是前端圈的“当红辣子鸡”

    摘要: ReScript 和 TypeScript 的出现都是为了更好地使用JavaScript,但两者还是有很大的不同. 本文分享自华为云社区<[云创共驻]ReScript 和 TypeScr ...

  10. Mybatis(三)——全局配置文件

    二.properties     三.settings 四.typeAilases 这里不做介绍.