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个 ...
随机推荐
- 在C#中使用C++编写的类——用托管C++进行封装
现在在Windows下的应用程序开发,VS.Net占据了绝大多数的份额.因此很多以前搞VC++开发的人都转向用更强大的VS.Net.在这种情况下,有很多开发人员就面临了如何在C#中使用C++开发好的类 ...
- 【转】分布式之redis复习精讲
转自:https://www.cnblogs.com/rjzheng/p/9096228.html 引言 为什么写这篇文章? 博主的<分布式之消息队列复习精讲>得到了大家的好评,内心诚惶诚 ...
- PsSetCreateProcessNotifyRoutineEx 创建回调函数
转载自http://blog.csdn.net/yushiqiang1688/article/details/5209597 最近要做一个进程监控的程序,功能很简单,就是创建和退出进程的时候,能触发我 ...
- 实现Comparable接口
1 import java.util.TreeSet; 2 3 4 /** 5 * PriorityQueue, TreeSet是排序集合,存储的对象必须实现Comparable接口. 6 * 原因是 ...
- docker容器 如何精简镜像减小体积
写在前面 我们在上篇<Docker容器 关于镜像构建的安全问题>一起学习了如何构建一个基于安全的镜像,这篇小作文我们会学习镜像构建的另一个关键性问题,为何别人打造的镜像只有10MB而我的有 ...
- 高德地图——2D转换3D
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script ty ...
- Linux Ubuntu SVN图形界面 安装使用
安装 sudo apt-get install rapidsvn 使用 rapidsvn
- SSE图像算法优化系列三十一:Base64编码和解码算法的指令集优化。
一.基础原理 Base64是一种用64个Ascii字符来表示任意二进制数据的方法.主要用于将不可打印的字符转换成可打印字符,或者简单的说是将二进制数据编码成Ascii字符.Base64也是网络 ...
- Qt之文件操作
虽然文件操作是一项很常用的功能,但是总记不住,今天就干脆记了一下笔记,以后好查阅. 在Qt中,主要使用的是QFile类进行文件操作,因此要包括#include <QFile>头文件.下面就 ...
- 存储系统管理(一)——Linux系统的设备和分区管理
1.设备名称的理解 /dev/sda1? sata硬盘,a1表示第一块硬盘中的第一个分区 /dev/cdrom 光驱 /dev/mapper/*? 系统中的虚拟设备 2.发现系统中的设备 ? fdis ...