android 使用SQLite的基本操作
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的基本操作的更多相关文章
- Android 的 Sqlite基本操作
在 SQL 数据库中保存数据 使用数据库 将数据保存到数据库对于重复或结构化数据(比如契约信息)而言是理想之选. 本课程假定您基本熟悉 SQL 数据库并且可帮助您开始在 Android 中使用 SQL ...
- 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 ...
- android 一个SQLite数据库多个数据表的基本使用框架 (带demo)
android 一个SQLite数据库多个数据表(带demo) 前言 demo演示 一.搭建 二.建立实体类 三.建立数据库操作类 ...
- Android之SQLite数据存储
一.SQLite保存数据介绍 将数据库保存在数据库对于重复或者结构化数据(比如契约信息)而言是理想之选.SQL数据库的主要原则之一是架构:数据库如何组织正式声明.架构体现于用于创建数据库的SQL语句. ...
- android安卓Sqlite数据库实现用户登录注册
看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!建立一个类 并继承SQLiteOpenHelper public ...
- Android中SQLite数据库小计
2016-03-16 Android数据库支持 本文节选并翻译<Enterprise Android - Programing Android Database Applications for ...
- android 对sqlite数据库的增删改查等各种操作
转载:http://blog.csdn.net/vrix/article/details/6717090 package com.sqlite.main; import java.io.File; i ...
- Android学习---SQLite数据库的增删改查和事务(transaction)调用
上一篇文章中介绍了手工拼写sql语句进行数据库的CRUD操作,本文将介绍调用sqlite内置的方法实现CRUD操作,其实质也是通过拼写sql语句. 首先,创建一个新的android项目: 其次,查看代 ...
- android数据库SQLite的设计模式
Dao设计模式可能是使用最多的数据库的设计模式其基本思路是将数据库操作的代码 与设计代码分离以便于维护和升级.具体的实现方法是使用包,然后在设计代码中调 用数据库的操作代码,dao设计模式需要创建5个 ...
随机推荐
- 【mysql】关联查询_子查询_排序分组优化
1. 关联查询优化 1.1 left join 结论: ①在优化关联查询时,只有在被驱动表上建立索引才有效! ②left join 时,左侧的为驱动表,右侧为被驱动表! 1.2 inner join ...
- HTML5存储 ——Web Storage(localStorage 和 sessionStorage)
一.localStorage对象临时储存API 方法: 1.localStorage.setItem(key,value)---设置存储内容 2.localStorage.getItem(key)-- ...
- 阿里云服务器,http免费转https详细教程
1.搜ssl证书,点击立即购买 2.这里我们选择免费证书,点击右边立即购买,去支付 购买完成之后,申请证书状态会显示在审核中,不过很快的,几分钟就申请成功了,以下就是我申请成功的界面,因为我服务器用的 ...
- C++模板简介
模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数.返回值取得任意类型. 模板是一种对类型进行参数化的工具: 通常有两种形式:函 ...
- android http get
Executors.newSingleThreadExecutor().execute{ val uri = "https://www.cnblogs.com/hangj" val ...
- ReScript 与 TypeScript,谁是前端圈的“当红辣子鸡”
摘要: ReScript 和 TypeScript 的出现都是为了更好地使用JavaScript,但两者还是有很大的不同. 本文分享自华为云社区<[云创共驻]ReScript 和 TypeScr ...
- ThreadLocal原理简单刨析
ThreadLocal原理简单刨析 ThreadLocal实现了各个线程的数据隔离,要知道数据是如何隔离的,就要从源代码分析. ThreadLocal原理 需要提前说明的是:ThreadLocal只是 ...
- [考试总结]noip模拟45
真开心,挂没了.. 考完:"你们怎么第二题打了这么点分,明明一个爆搜就有65pts!!!怎么跟别人打?!" 然后我看了看我的爆搜,30pts. 然后认为自己打爆了... 我又想为什 ...
- openswan一条隧道多保护子网配置
Author : Email : vip_13031075266@163.com Date : 2021.01.22 Copyright : 未经同意不得 ...
- ubantu虚拟机搭建xl2tp服务
在编译成功源码,安装完毕xl2tpd后,便可以配置xl2tpd服务.基本配置过程主要涉及两个配置文件:一个用来配置xl2tpd, 一个用来配置ppp协议.下面分别对这两个文件进行说明,最后添加xl2t ...