andorid SQLite数据库的增删改查 和事务操作
.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.hanqi.application3.DataActivity2"
android:orientation="vertical"> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="创建数据库"
android:id="@+id/bt_bt1"
android:onClick="bt_bt1onClick"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="升级数据库"
android:id="@+id/bt_bt2"
android:onClick="bt_bt2onClick"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="增加数据"
android:id="@+id/bt_bt3"
android:onClick="bt_bt3onClick"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="查询数据"
android:id="@+id/bt_bt4"
android:onClick="bt_bt4onClick"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="修改数据"
android:id="@+id/bt_bt5"
android:onClick="bt_bt5onClick"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="删除数据"
android:id="@+id/bt_bt6"
android:onClick="bt_bt6onClick"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="事务操作"
android:id="@+id/bt_bt7"
android:onClick="bt_bt7onClick"/> </LinearLayout>
.java
package com.hanqi.application3; import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Toast; public class DataActivity2 extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_data2);
}
//继承SQLiteOpenHelper
class DBHelper extends SQLiteOpenHelper
{
//构造方法
//name 数据库名
//version数据库版本号
public DBHelper(String name, int version) {
//调用父类的构造方法,写在第一行
super(DataActivity2.this, name, null, version);
}
//回调方法
//在创建数据库时调用
//什么时候创建数据库:连接数据库的时候,如果数据文件不存在
//只调用一次
@Override
public void onCreate(SQLiteDatabase db) { //1.创建数据库的语句
String creatTable = "create table user1 (_id integer PRIMARY KEY AUTOINCREMENT NOT NULL,name varchar,age int)";
db.execSQL(creatTable); //2.初始化数据
ContentValues cv= new ContentValues();
cv.put("name","tom");
cv.put("age", 30);
//如果不成功返回-1
//1.第一个参数是表名,第二个参数空列的默认值,第三个字段和要插入值key/value得集合
long l = db.insert("user1",null,cv); Toast.makeText(DataActivity2.this, "id="+l, Toast.LENGTH_SHORT).show(); }
//升级数据库
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//执行升级
// update user1 set age = 30 where _id = ?
//? 是占位符,然后给占位符赋值
ContentValues cv= new ContentValues(); cv.put("age", 30);
int rowcount = db.update("user1",cv,"_id=? and name=?",new String[]{"1","tom"}); Log.e("TAG","rowcount = "+rowcount); }
}
//创建数据库
public void bt_bt1onClick(View v)
{
//创建
DBHelper dh = new DBHelper("test.db",1);
//获取数据库实例
SQLiteDatabase sdd = dh.getWritableDatabase();
sdd.close(); }
//升级数据库
public void bt_bt2onClick(View v)
{
//创建
DBHelper dh = new DBHelper("test.db",2);
//获取数据库实例
SQLiteDatabase sdd = dh.getWritableDatabase();
sdd.close(); }
//插入数据
public void bt_bt3onClick(View v)
{
//创建
DBHelper dh = new DBHelper("test.db",2);
//获取数据库实例
SQLiteDatabase sdd = dh.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put("name","tom1");
cv.put("age", 15);
long _id = sdd.insert("user1", null, cv);
Log.e("TAG","_id= "+_id); sdd.close(); }
//查询数据库
public void bt_bt4onClick(View v)
{
//创建
DBHelper dh = new DBHelper("test.db",2);
//获取数据库实例
SQLiteDatabase sdd = dh.getWritableDatabase();
// 全表查询
//返回游标
Cursor cursor = sdd.query("user1", null, null, null, null, null, null); //Cursor 一开始会定位在第一条数据的上方
// 移动游标到数据的上面,提取数据后,再继续移动
while (cursor.moveToNext())
{
long _id =cursor.getLong(cursor.getColumnIndex("_id"));
String name = cursor.getString(1);
int age = cursor.getInt(2); Log.e("TAG","_id = "+_id+"name = "+name+"age= "+age);
}
cursor.close();
sdd.close(); }
//修改数据
public void bt_bt5onClick(View v)
{
//创建
DBHelper dh = new DBHelper("test.db",2);
//获取数据库实例
SQLiteDatabase sdd = dh.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put("name", "tom3"); int count = sdd.update("user1",cv,"_id >= 3",null);
Log.e("TAG", "Updatecount= " + count); sdd.close(); }
//删除数据
public void bt_bt6onClick(View v)
{
//创建
DBHelper dh = new DBHelper("test.db",2);
//获取数据库实例
SQLiteDatabase sdd = dh.getReadableDatabase(); int count = sdd.delete("user1","_id = 4",null);
Log.e("TAG", "Deletcount= " + count); sdd.execSQL("delect from user1 where _id=3"); sdd.close(); }
public void bt_bt7onClick(View v) {
//创建
DBHelper dh = new DBHelper("test.db", 2);
//获取数据库实例
SQLiteDatabase sdd = dh.getWritableDatabase();
//链接
sdd = SQLiteDatabase.openOrCreateDatabase("test.db",null);
//判断是否建表了,是否升级了
try { //1.开启事务
sdd.beginTransaction(); ContentValues cv = new ContentValues(); cv.put("age", "40"); int count = sdd.update("user1", cv, "_id = 1", null);
//抛出异常
boolean b = true;
if (b) {
//throw new RuntimeException("出现异常");
}
count += sdd.update("user1", cv, "_id = 2", null);
Log.e("TAG", "Updatecount= " + count);
//2.设置事务执行成功
sdd.setTransactionSuccessful();
//提交
}
catch (Exception e)
{
//回滚
e.printStackTrace(); Toast.makeText(DataActivity2.this, "异常信息"+e.getMessage(), Toast.LENGTH_SHORT).show();
}
//一定会被执行的代码
finally { //3.结束事务,1)提交 2)回滚;
sdd.endTransaction(); sdd.close();
}
} }
andorid SQLite数据库的增删改查 和事务操作的更多相关文章
- 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数据库进行增删改查
今天这篇文章写Sqlite数据库,通过一个小案例来完整讲一下数据库常见的CRUD操作. 先对知识点总结: SQLite数据库 轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHel ...
- Android下利用SQLite数据库实现增删改查
1: 首先介绍如何利用adb查看数据库 1: adb shell 2: cd /data/data/包名/databases 3: sqlite3 数据库 4 接下来就可以进行数据库的sql语法 ...
- Android对Sqlite数据库的增删改查
SqLite 数据库 Google 为我们提供了sqlite相关的api SqLiteOpenHelper 这是一个抽象的类 如果想要使用的话,需要其他的类去继承他 SqLiteDatabase 类 ...
- [Android] SQLite数据库之增删改查基础操作
在编程中常常会遇到数据库的操作,而Android系统内置了SQLite,它是一款轻型数据库,遵守事务ACID的关系型数据库管理系统,它占用的资源非常低,可以支持Windows/Linux/Un ...
- greendao对SQLite数据库的增删改查操作
利用greendao操作数据库时,都是以对象或者对象的list来进行增删改查的操作,操作的结果都是用一个list来接收的!!! 1.增加一条记录 Stu stu01=new Stu();stu01.s ...
- SQLite数据库以及增删改查的案例
Android使用开源的与操作系统无关的SQL数据库——SQLite 一:在命令行下创建数据库: 1.启动模拟器后,打开命令行,执行adb shell 2.进入所在工程目录 3.执行sqlite3 m ...
- Android,java,php开发最基本的知识,mysql sqlite数据库的增删改查代理,sql语句
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985转载请说明出处. 下面是代码: 增加:insert into 数据表(字段1,字段2,字段3) valu ...
随机推荐
- ObjectID和Handle
一个dwg对应一个arx database,也就是一套9个符号表和一个有名词典. 一个CAD session中是可以加载多个database的.加载后每个对象都有一个handle和一个objectid ...
- knockout 学习实例3 html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Spring学习 Ioc篇(二 )
5.spring依赖注入的方式 方法一:使用构造器方式进行注入 1.dao的类和接口 package com.cvicse.dao.impl; import com.cvicse.dao.Person ...
- LVS安装使用详解
简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org. ...
- python中使用xlrd、xlwt操作excel表格详解
python读excel——xlrd 这个过程有几个比较麻烦的问题,比如读取日期.读合并单元格内容.下面先看看基本的操作: 首先读一个excel文件,有两个sheet,测试用第二个sheet,shee ...
- webpack +vue开发(1)
首先安装 node.js这是毋庸置疑的,安装完了之后安装webpack npm install webpack -g 接下来创建一个自己的文件夹 webpack-learn在里面创建一个index.h ...
- BlockingQueue深入分析
1.BlockingQueue定义的常用方法如下 抛出异常 特殊值 阻塞 超时 插入 add(e) offer(e) put(e) offer(e,time,unit) 移除 remove() p ...
- dbus
http://blog.csdn.net/zyz511919766/article/details/7700498 http://maemo.org/maemo_training_material/m ...
- Windows窗口自动缩放机制
通过自动缩放功能,能使在一个计算机上设计的界面在另一个具有不同分辨率或系统字体的计算机上能正常显示.这样窗体及其控件就能通过智能化调整大小以保障在本地电脑和用户电脑上保持一致. 自动缩放的必要性 如果 ...
- IEEE浮点数表示法之出小数
纯小数的表示方法------------------------------------------------- 下面再来讲如何将纯小数转化为十六进制.对于纯小数,比如0.0456,我们需要把 ...