.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数据库的增删改查 和事务操作的更多相关文章

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

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

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

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

  3. Android中Sqlite数据库进行增删改查

    今天这篇文章写Sqlite数据库,通过一个小案例来完整讲一下数据库常见的CRUD操作. 先对知识点总结: SQLite数据库 轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHel ...

  4. Android下利用SQLite数据库实现增删改查

    1: 首先介绍如何利用adb查看数据库 1: adb shell 2: cd /data/data/包名/databases 3:  sqlite3 数据库 4   接下来就可以进行数据库的sql语法 ...

  5. Android对Sqlite数据库的增删改查

    SqLite 数据库 Google 为我们提供了sqlite相关的api SqLiteOpenHelper 这是一个抽象的类 如果想要使用的话,需要其他的类去继承他 SqLiteDatabase 类 ...

  6. [Android] SQLite数据库之增删改查基础操作

        在编程中常常会遇到数据库的操作,而Android系统内置了SQLite,它是一款轻型数据库,遵守事务ACID的关系型数据库管理系统,它占用的资源非常低,可以支持Windows/Linux/Un ...

  7. greendao对SQLite数据库的增删改查操作

    利用greendao操作数据库时,都是以对象或者对象的list来进行增删改查的操作,操作的结果都是用一个list来接收的!!! 1.增加一条记录 Stu stu01=new Stu();stu01.s ...

  8. SQLite数据库以及增删改查的案例

    Android使用开源的与操作系统无关的SQL数据库——SQLite 一:在命令行下创建数据库: 1.启动模拟器后,打开命令行,执行adb shell 2.进入所在工程目录 3.执行sqlite3 m ...

  9. Android,java,php开发最基本的知识,mysql sqlite数据库的增删改查代理,sql语句

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985转载请说明出处. 下面是代码: 增加:insert into 数据表(字段1,字段2,字段3) valu ...

随机推荐

  1. ssh远程连接错误

    在平时工作中,有时候需要SSH登陆到别的Linux主机上去,但有时候SSH登陆会被禁止,并弹出如下类似提示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...

  2. ubuntu14升级到15后遇到的问题

    ubuntu14的unity坏了,于是就找了个镜像升级到15.但是升级完android开发环境出了点问题.. 1:Picked up JAVA_TOOL_OPTIONS: -javaagent:/us ...

  3. 为什么要用Maven?

    早期还在学怎么用Ant构建项目时,就有看到说Maven是Ant的替代品,但真正意义去了解Maven,还是因为以前的公司一老员工在做OpenJMS二次开发时,从网上下载了源码,然后用Maven构建它. ...

  4. DevExpress中GridView上的右键菜单

    1. 先拖一个PopupMenu和BarManage控件,设置PopupMenu的Manager属性为BarManager. 2. 先选中GridView,不是GridControl,在属性窗口中,选 ...

  5. 41. Unique Binary Search Trees && Unique Binary Search Trees II

    Unique Binary Search Trees Given n, how many structurally unique BST's (binary search trees) that st ...

  6. 刷了OpenWrt Attitude Adjustment 12.09,很满意

    OpenWrt的这个新版本编译好的固件里集成了luci,图形界面还是很方便的. 装了wpad.qos之后,空间刚好剩下一点点,囧,4M闪存还是不够折腾啊. 发现一个bug:如果空间不够的情况下继续安装 ...

  7. Karma: 3 - 测试覆盖率

    karma 的插件 karma-coverage 提供了测试代码覆盖率的支持. karma 的页面:http://karma-runner.github.io/0.8/config/coverage. ...

  8. SQL SERVER触发器游标小记

    今天接到个需求用触发器来实现通过条件对其他表的更新.好久没摸SQL SERVER,电脑里也没SQL SERVER安装包,同事遂发来个安装包,一看吓一跳,3.6G!!!!经过漫长等待后,开始作业.需求如 ...

  9. js动画性能提升笔记

    JavaScript动画的性能并不亚于CSS动画.因此,如果使用了现代的动画库,例如Velocity,那么动画引擎的性能将不再是app的瓶颈,构成瓶颈的只有代码. 网络性能相关 动画是浏览器运行中资源 ...

  10. arcgis engine 基础代码

    1.开始编辑,save feature property,停止编辑 IWorkspace workspace = ((IDataset)pFeatureClass).Workspace;IWorksp ...