Android——SQLite数据库(二)升级数据库、增、删、改、查、事务

xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="创建数据库"
        android:id="@+id/bt_cjshujuku"
        android:onClick="chuangjiansjkonclick"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="升级数据库"
        android:id="@+id/bt_sjshujuku"
        android:onClick="shengjisjkonclick"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="增加数据"
        android:id="@+id/bt_zjshuju"
        android:onClick="zengjiasjonclick"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="查询数据"
        android:id="@+id/bt_cxjuku"
        android:onClick="chaxunsjonclick"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="修改数据"
        android:id="@+id/bt_xgjuku"
        android:onClick="xiugaisjonclick"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="删除数据"
        android:id="@+id/bt_scjuku"
        android:onClick="shanchusjonclick"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="事务操作"
        android:id="@+id/bt_shiwucz"
        android:onClick="shiwuczonclick"/>

</LinearLayout>

java

package com.example.chenshuai.test321;

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 Activitydatashujuku extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_activitydatashujuku);
    }

    /*操作数据库有两个非常重要的类:SQLiteDatabase和SQLiteOpenHelper
    * 1.SQLiteDatabase的实例便代表了SQLite数据库,通过SQLiteDatabase的一些常用方法,可以执行SQL语句,
    * 对数据库进行添加、删除、更新、查找和修改等操作
    * 2.SQLiteOpenHelper是一个辅助类,主要负责创建和打开数据库以及对数据库的版本进行管理。
    * SQLiteOpenHelper是一个抽象类,需要继承它并实现它的几个回调函数
    * */
   /*
    1.写内部类 继承SQLiteOpenHelper
    2.生成实现方法
      (1)创建  public void onCreate(SQLiteDatabase db) {
      (2)升级  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    3.生成器 调用父类的构造方法
     public DBHelper(String name, int version) {

    4.点击事件 调用构造方法DBHelper 创建 连接数据库
*/
    //内部类继承  需要自己生成构造器
    class DBHelper extends SQLiteOpenHelper
    {
        //构造方法
        //name 数据库名
        //version 自己定义的数据库的版本号
        public DBHelper(String name, int version) {

           //需要调用父类的构造方法 写在第一行
            super(Activitydatashujuku.this, name, null, version);
        }

        //实现方法  是一个回调方法
        //在创建数据库时调用
        //什么时候创建数据库:连接数据库的时候,如果数据库文件不存在
        //只调用一次
        @Override
        public void onCreate(SQLiteDatabase db) {

            //1.创建数据库的语句
            //构造建表语句
            String creaTTable = "create table user (_id integer PRIMARY KEY AUTOINCREMENT NOT NULL,name varchar,age int)";
            db.execSQL(creaTTable);

            //2.初始化参数 ContentValues
            ContentValues cv = new ContentValues();

            cv.put("name","tom");
            cv.put("age", "20");
            //返回id long型  如果不成功返回-1
            //1-表名
            //2-空列的默认值
            //3-字段和值的key/value集合
            Long l = db.insert("user", null, cv);
            Toast.makeText(Activitydatashujuku.this, "id="+l, Toast.LENGTH_LONG).show();

        }

        //升级数据库
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

            //执行升级
            //update user set age=10 where _id=?
            //?是一个占位符,然后给占位符赋值

            //初始化数据
            ContentValues cv = new ContentValues();

            cv.put("age", "10");

            //db.update("user",cv,"_id=1",null);
            int rowcount = db.update("user",cv,"_id=? and name=?",new String[]{"1","tom"});

            Log.e("TAG"," rowcount= "+rowcount);
        }
    }

    //创建数据库
    public void chuangjiansjkonclick(View view)
    {
        //创建  实现工具类
        DBHelper dh = new DBHelper("test.db",1);

        //连接数据库 获取数据库实例
        //getWritableDatabase() 数据写满会报错
        //getReadableDatabase() 数据写满不会报错
        SQLiteDatabase sd = dh.getWritableDatabase();

        sd.close();

    }

    //升级数据库
    public void shengjisjkonclick(View view)
    {
        //创建  实现工具类
        DBHelper dh = new DBHelper("test.db",2);

        //连接数据库 获取数据库实例
        //getWritableDatabase() 数据写满会报错
        //getReadableDatabase() 数据写满不会报错
        SQLiteDatabase sd = dh.getWritableDatabase();

        sd.close();
    }
    //插入数据
    public void zengjiasjonclick(View view)
    {
        //创建
        DBHelper dh = new DBHelper("test.db",2);
        //连接数据库
        SQLiteDatabase sd = dh.getWritableDatabase();

        ContentValues cv = new ContentValues();
        cv.put("name","再见孙悟空");
        cv.put("age","20");

        Long _id = sd.insert("user", null, cv);

        Log.e("TAG"," _id= "+_id);

        //关闭
        sd.close();

    }

    //查询数据
    public void chaxunsjonclick(View view)
    {
        //创建  实现工具类
        DBHelper dh = new DBHelper("test.db",2);

        //连接数据库 获取数据库实例
        //getWritableDatabase() 数据写满会报错
        //getReadableDatabase() 数据写满不会报错
        SQLiteDatabase sd = dh.getWritableDatabase();

        //全表查询
        //查询数据库返回 Cursor:游标
        Cursor cursor = sd.query("user", null, null, null, null, null, null);

        //Cursor 一开始会定位在第一条数据的上方
        //移动Cursor到数据的上面,提取数据,然后继续移动

        while(cursor.moveToNext())
        {
            Long _id = cursor.getLong(cursor.getColumnIndex("_id"));
            String name = cursor.getString(cursor.getColumnIndex("name"));
            int age = cursor.getInt(2);

            Log.e("TAG"," _id= "+_id + "name= "+name +"age= "+age);
        }
        cursor.close();
        sd.close();
    }
    //修改数据
    public void xiugaisjonclick(View view)
    {
        //创建  实现工具类
        DBHelper dh = new DBHelper("test.db",2);

        //连接数据库 获取数据库实例
        //getWritableDatabase() 数据写满会报错
        //getReadableDatabase() 数据写满不会报错
        SQLiteDatabase sd = dh.getWritableDatabase();

       /* 不用辅助类连接数据库(了解)
        sd = SQLiteDatabase.openOrCreateDatabase("text.db",null);
        判断是否建表,是否升级了
*/
       ContentValues cv= new ContentValues();

        cv.put("name", "孙悟空");

        int count =  sd.update("user",cv,"_id>=3",null);

        Log.e("TAG", " update count= " + count);

        sd.close();

    }

    //删除数据
    public void shanchusjonclick(View view)
    {

        //创建  实现工具类
        DBHelper dh = new DBHelper("test.db",2);

        //连接数据库 获取数据库实例
        //getWritableDatabase() 数据写满会报错
        //getReadableDatabase() 数据写满不会报错
        SQLiteDatabase sd = dh.getWritableDatabase();

        int count =  sd.delete("user", "_id=4", null);

        Log.e("TAG", " delete count = " + count);

        //sd.execSQL没有返回值
        sd.execSQL("delete from user where _id = 5");

        sd.close();
    }

    //事务操作
    public void shiwuczonclick(View view)
    {
        //创建  实现工具类
        DBHelper dh = new DBHelper("test.db",2);

        //连接数据库 获取数据库实例
        //getWritableDatabase() 数据写满会报错
        //getReadableDatabase() 数据写满不会报错
        SQLiteDatabase sd = dh.getWritableDatabase();

        try {
            //1.开启事务
            sd.beginTransaction();

            ContentValues cv = new ContentValues();

            cv.put("name", "孙悟饭");

            int count = sd.update("user", cv, "_id=6", null);

            //手动抛出异常
            boolean b = true;
            if (b) {
               // throw new RuntimeException("出现异常信息");
            }

            count += sd.update("user", cv, "_id=7", null);

            Log.e("TAG", " updatecount= " + count);

            //2.设置事务执行成功
            sd.setTransactionSuccessful();
            //提交
        }
        catch (Exception e)
        {
            //回滚
            e.printStackTrace();
            Toast.makeText(Activitydatashujuku.this, "异常信息为"+e.getMessage(), Toast.LENGTH_SHORT).show();
        }
        //一定会被执行的代码
        finally {
            //3.结束事务 要确保它一定会执行 finally
            //条件 (1)提交 (2)回滚
            sd.endTransaction();

            sd.close();

        }

    }
}

时间: 2024-10-19 13:40:09

Android——SQLite数据库(二)升级数据库、增、删、改、查、事务的相关文章

Python---MySQL数据库之四大操作(增 删 改 查)

一.对数据库,表,记录---四大操作(增 删 改 查) 1.操作数据库 (1)对数据库(文件夹):进行增加操作 Create  database  库名; 例:  Create  database  db7 ; 查询库: show  databases; 结果: +-----------------------------+ | Database                   | +----------------------------+ | information_schema | |

ADO.NET 增 删 改 查

ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访问技术的基础 连接数据库基本格式:需要两个类1.数据库连接类 SqlConnection2.数据库操作类 SqlCommand 1.连接数据库写连接字符串,立马就要想到有4点要写完,1.连接哪台服务器,2.连接哪个数据库,3.连接用户名,4.密码string sql = "server=.(服务器i

数据库的增 删 改 查语句汇总

(select * from xxx  - -查询语句) 一:新建数据库 (xxx表示名称) use XXX - -指向当前所操作的数据库 go create table xxx - -新建表关键字 (  列的名称 数据类型 not null,  列的名称 数据类型 not null,  列的名称 数据类型 not null  (  idenitiy(1,1)- -表示标识,标识种子为1增长为1     )  (  primary key (列名) - -设置主键                

Android 增,删,改,查 通讯录中的联系人

一.权限 操作通讯录必须在AndroidManifest.xml中先添加2个权限, <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission> <uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>

数据库基础学习4--表格的 增 删 改 查(简单查询与高级查询)

一.增 C:create 增加,创建,向数据库里面添加数据. insert into Fruit values('K009','苹果',3.0,'高青',90,'') insert into Fruit(Ids,Name,Price,Source,Numbers) values('K010','苹果',3.0,'高青',90) 二.改 U:update修改,从数据库表里面修改数据. update Fruit set Source='烟台' where Ids='K001' 三.删 D:delet

php基础:数据库的含义和基本操作 增 删 改 查

//数据库是帮我们管理数据的一个软件,我们将数据给他,放进数据库里.他能很稳妥的帮我们管理起来,且效率很高.//php的大部分工作就是  php->连接数据库->写入数据->查出数据->格式化数据->显示出来,//数据库管理数据是以表的形式组成的,多行多列,表头声明好了,一个表创建好了,剩下的就是往里面添加数据 多张表放在一个文件夹里面就形成了库  mysql服务器帮我们管理多个库C:\wamp\bin\mysql\mysql5.6.12\data   数据库中的数据放在这个

iOS 数据库FMDN 数据库的增 删 改 查 的 的基本操作

FMDB的下载地址 (https://github.com/ccgus/fmdb) 话不多说首先将这个 库加进来,在将加进来,OK  准备工作就绪上代码. #import "DDViewController.h" #import "FMDB.h" @interface DDViewController () { FMDatabase *db; } @end @implementation DDViewController /** *  要先做要有个位置去存放数据库 

数据库的增,删,改,查的操作示例

public class Test extends AndroidTestCase { private shujuku shu; private SQLiteDatabase db; // 测试方法执行前调用 @Override protected void setUp() throws Exception { // TODO Auto-generated method stub   super.setUp(); shu = new shujuku(getContext()); // 拿到数据库

怎样从C#中打开数据库并进行 增 删 改 查 操作

首先 在C#中引用数据库的操作! (因为我们用的是SQLserver数据库,所以是SqlClient) using System.Data.SqlClient; 1:要实现对数据库的操作,我们必须先登录数据库 Console.WriteLine("请输入用户名:"); //提示客户输入用户名和密码 string name = Console.ReadLine(); Console.WriteLine("请输入密码:"); string pwd = Console.R

数据操作:增 删 改 查

1.创建数据库create database 库名gouse 库名go 2.创建表 create table 表名 ( 列名 类型, 列名 类型, 列名 类型 ) 例子: create table one( daihao varchar(10), shuming varchar(50), zuozhe varchar(10), chubanshe varchar(50), shijian datetime) 3.添加行记录 insert into 表名(列名,列名,列名) values('值',