android SQLiteOpenHelper 使用

2023-05-16

1、实体

复制代码


package mydemo.mycom.demo2.entity;


public class UserInfo {
    private int id;
    private String username;
    private String password;

    public UserInfo()
    { }

    public UserInfo(int id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}  

复制代码

2.UserSQLiteOpenHelper 

复制代码


package mydemo.mycom.demo2.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class UserSQLiteOpenHelper extends SQLiteOpenHelper {

    /**
     * 数据库的构造方法  用来定义数据库的名称  数据库查询的结果集 数据库的版本
     * **/

    public UserSQLiteOpenHelper(Context context) {
        super(context, "user.db", null, 1);
    }
    /**
     * 数据库第一次被创建的时候调用的方法
     *  db被创建的数据库
     * **/
    @Override
    public void onCreate(SQLiteDatabase db) {
        //初始化数据库的表结构 d integer primary key autoincrement,
        db.execSQL("create table user (id integer primary key autoincrement,username varchar(20),password varchar(20))");
    }
    /**
     * 当数据库的版本号发生变化的时候(增加的时候) 调用
     * */
    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i2) {

        db.execSQL("alter table user add account varchar(20)");
    }
}  

复制代码

3.JDBC的UserDAO

复制代码


package mydemo.mycom.demo2.dao;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;


import java.util.ArrayList;
import java.util.List;

import mydemo.mycom.demo2.db.UserSQLiteOpenHelper;
import mydemo.mycom.demo2.entity.UserInfo;

public class UserDao {

    private UserSQLiteOpenHelper helper;

    public UserDao(Context context)
    {
        helper = new UserSQLiteOpenHelper(context);
    }

    /**
    * 添加一条记录到数据库
     * username 用户名
     * password 密码
     *
    * */
    public void add(String username,String password)
    {
        SQLiteDatabase db = helper.getWritableDatabase();
        db.execSQL("insert into user(username,password) values(?,?)",new String[]{username,password});
        db.close();

    }

    /**
     * 判断数据库是否存在username 的数据
     *
     * username 用户名
     * */
    public boolean findByUsername(String username)
    {
        SQLiteDatabase db = helper.getWritableDatabase();
        Cursor cursor = db.rawQuery("select * from user where username=?",new String[]{username});
        boolean result = cursor.moveToNext();
        db.close();
        return result;
    }

    /**
     * 修改一条记录
     * 通过username 修改 password
     *
     * username 用户名
     * password 密码
     *
     * */
    public void update(String username,String password)
    {
        SQLiteDatabase db = helper.getWritableDatabase();
        db.execSQL("update user set password=? where username=?",new String[]{password,username});
        db.close();

    }

    /**
     * 删除记录
     * 通过username修改一条记录
     *
     * username 用户名
     * */
    public void delete(String username)
    {
        SQLiteDatabase db = helper.getWritableDatabase();
        db.execSQL("delete from user where username=?",new String[]{username});
        db.close();
    }

    /**
     * 找出所有用户信息
     * */
    public List<UserInfo> findAll()
    {
        SQLiteDatabase db = helper.getWritableDatabase();
        List<UserInfo> list = new ArrayList<UserInfo>();
        Cursor cursor = db.rawQuery("select * from user",null);
        while(cursor.moveToNext())
        {
            int id = cursor.getInt(cursor.getColumnIndex("id"));
            String username = cursor.getString(cursor.getColumnIndex("username"));
            String password = cursor.getString(cursor.getColumnIndex("password"));

            UserInfo userInfo = new UserInfo(id,username,password);
            list.add(userInfo);
        }
        cursor.close();
        db.close();
        return list;
    }

    /**
     * 通过id 用户信息
     * id 用户id
     * */
    public UserInfo findById(int id)
    {
        SQLiteDatabase db = helper.getWritableDatabase();
        Cursor cursor =db.rawQuery("select * from user where id=?",new String[]{id+""});

        UserInfo user = new UserInfo();

        while(cursor.moveToNext())
        {
            int uid = cursor.getInt(cursor.getColumnIndex("id"));
            String username = cursor.getString(cursor.getColumnIndex("username"));
            String password = cursor.getString(cursor.getColumnIndex("password"));

            user.setId(uid);
            user.setPassword(password);
            user.setUsername(username);

            break;
        }
        cursor.close();
        db.close();
        return user;

    }

}  

复制代码

4.SQLiteOpenHelper的 UserDAO

复制代码


package mydemo.mycom.demo2.dao;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import java.util.ArrayList;
import java.util.List;

import mydemo.mycom.demo2.db.UserSQLiteOpenHelper;
import mydemo.mycom.demo2.entity.UserInfo;

/**
 * Created by Administrator on 2015/5/15.
 */
public class UserDao2 {

    private UserSQLiteOpenHelper helper;

    public UserDao2(Context context)
    {
        helper = new UserSQLiteOpenHelper(context);
    }

    /**
     * 添加一条记录到数据库
     * username 用户名
     * password 密码
     *
     * */
    public long add(String username,String password)
    {
        SQLiteDatabase db = helper.getWritableDatabase();

        ContentValues values = new ContentValues();

        values.put("username",username);
        values.put("password",password);

        long num = db.insert("user",null,values);

        db.close();

        return num;
    }

    /**
     * 判断数据库是否存在username 的数据
     *
     * username 用户名
     * */
    public boolean findByUsername(String username)
    {
        SQLiteDatabase db = helper.getWritableDatabase();
        Cursor cursor = db.query("user",null,"username=?",new String[]{username},null,null,null);
        boolean result = cursor.moveToNext();
        db.close();
        return result;
    }

    /**
     * 修改一条记录
     * 通过username 修改 password
     *
     * username 用户名
     * password 密码
     *
     * */
    public int update(String username,String password)
    {
        SQLiteDatabase db = helper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("password",password);
        int num = db.update("user",values,"username=?", new String[]{username});
        db.close();
        return num;
    }

    /**
     * 删除记录
     * 通过username修改一条记录
     *
     * username 用户名
     * */
    public int delete(String username)
    {
        SQLiteDatabase db = helper.getWritableDatabase();
        int num = db.delete("user","username=?",new String[]{username});
        db.close();
        return num;
    }

    /**
     * 找出所有用户信息
     * */
    public List<UserInfo> findAll()
    {
        SQLiteDatabase db = helper.getWritableDatabase();
        List<UserInfo> list = new ArrayList<UserInfo>();
        Cursor cursor = db.query("user",null,null,null,null,null,null);
        while(cursor.moveToNext())
        {
            int id = cursor.getInt(cursor.getColumnIndex("id"));
            String username = cursor.getString(cursor.getColumnIndex("username"));
            String password = cursor.getString(cursor.getColumnIndex("password"));

            UserInfo userInfo = new UserInfo(id,username,password);
            list.add(userInfo);
        }
        cursor.close();
        db.close();
        return list;
    }

    /**
     * 通过id 用户信息
     * id 用户id
     * */
    public UserInfo findById(int id)
    {
        SQLiteDatabase db = helper.getWritableDatabase();
        Cursor cursor = db.query("user",null,"id=?",new String[]{id+""},null,null,null);

        UserInfo user = new UserInfo();

        while(cursor.moveToNext())
        {
            int uid = cursor.getInt(cursor.getColumnIndex("id"));
            String username = cursor.getString(cursor.getColumnIndex("username"));
            String password = cursor.getString(cursor.getColumnIndex("password"));

            user.setId(uid);
            user.setPassword(password);
            user.setUsername(username);

            break;
        }
        cursor.close();
        db.close();
        return user;

    }
}  

复制代码

5.SQLiteOpenHelper 简单使用

复制代码


package mydemo.mycom.demo2;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import mydemo.mycom.demo2.dao.UserDao;
import mydemo.mycom.demo2.dao.UserDao2;


public class Register extends ActionBarActivity implements View.OnClickListener {

    private EditText et_register_username;
    private EditText et_register_password;
    private Button btn_register;

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

        et_register_username = (EditText)findViewById(R.id.et_register_username);
        et_register_password = (EditText)findViewById(R.id.et_register_password);
        btn_register = (Button)findViewById(R.id.btn_register);
        btn_register.setOnClickListener(this);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_register, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onClick(View view) {

        String username = et_register_username.getText().toString().trim();
        String password = et_register_password.getText().toString().trim();
        if(TextUtils.isEmpty(username) || TextUtils.isEmpty(password))
        {
            Toast.makeText(this,"用户名和密码不能为空",Toast.LENGTH_SHORT).show();
            return;
        }
        UserDao2 userDao = new UserDao2(this);
        userDao.add(username,password);
        Toast.makeText(this,"注册成功",Toast.LENGTH_SHORT).show();

    }
}  

复制代码

6.SQLiteOpenHelper事务管理

复制代码


package mydemo.mycom.demo2.testUserDao;

import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase;

import mydemo.mycom.demo2.db.UserSQLiteOpenHelper;


public class TestUserInfo extends AndroidTestCase{
    private String s;
    public void testTransaction() throws Exception
    {
        UserSQLiteOpenHelper helper = new UserSQLiteOpenHelper(getContext());
        SQLiteDatabase db = helper.getWritableDatabase();
        //开始数据库的事务
        db.beginTransaction();
        try{
            db.execSQL("update user set account=account-1000 where id=1");
            //空指针异常
            s.equals("123");
            db.execSQL("update user set account=account+1000 where id=2");
            //提交事务
            db.setTransactionSuccessful();
        }
        catch(Exception ex)
        {
        }
        finally
        {
            //结束事务
            db.endTransaction();
            db.close();
        }
    }


}  

复制代码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android SQLiteOpenHelper 使用 的相关文章

随机推荐

  • JVM(2)九个部分 p4

    文章目录 1 九大部分1 1 类加载子系统1 2 方法区1 3 堆1 4 直接内存1 5 jvm栈1 6 本地方法栈1 7 垃圾回收系统1 8 PC寄存器1 9 执行引擎 2 堆 栈 方法区的联系3 Java堆的不同结构4 对象已经死了吗4
  • 通过点击事件监听 setOnClickListener 彻底理解回调-Android

    前言 老司机们对于回调肯定熟悉得不能再熟悉了 但是新司机可能还是一脸懵逼的 xff0c 我比较笨 xff0c 当年懵逼了好久 xff0c 看夏安明的这一篇博客地址 xff0c 虽然下边的留言都是 xff0c 写得好 xff01 懂了懂了 x
  • Java 接口和抽象类可以被new么?——顺便总结内部类

    转载 xff1a https blog csdn net hackersaillen article details 47281549 背景 xff1a 最近有同事跟我说了他面试时遇到的问题 xff0c 考官问 xff1a 接口和抽象类可以
  • java之方法的重写

    方法的重写 xff1a 1 在子类中可以根据需要对从基类中继承来的方法进行重写 2 重写的方法和被重写的方法必须具有相同方法名称 参数列表和返回类型 3 重写方法不能使用比被重写的方法更严格的访问权限 程序code class Person
  • Android中传递对象的三种方法

    Android中 xff0c Activity和Fragment之间传递对象 xff0c 可以通过将对象序列化并存入Bundle或者Intent中进行传递 xff0c 也可以将对象转化为JSON字符串 xff0c 进行传递 序列化对象可以使
  • Android中BroadCastReceiver使用(整理)

    BroadcastReceiver 在Android中 xff0c Broadcast是一种广泛运用的在应用程序之间传输信息的机制 而BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件 下面将详
  • Android的联通性---USB主机模式(三)

    获取跟设备通信的权限 在跟USB设备进行通信之前 xff0c 你的应用程序必须要获取用户的许可 注意 xff1a 如果你的应用程序使用Intent过滤器来发现接入的USB设备 xff0c 而且用户允许你的应用程序处理该Intent xff0
  • android USB

    google 在推出API 3 0后 就增加啦USB通讯这块 同时为API 2 3提供啦一个USB通讯吧 xff0c 这样也让2 3有啦USB通讯功能 不过只支持USBAccessory模式 USB通讯分为两种模式 xff1a xff08
  • 入门 Kotlin 和 Java 混合开发

    一 前沿 如果你学习过其他的编程语言 xff0c 你就会发现 Java 的语法很是哆嗦 xff0c 可是我们为什么没有放弃 Java 这门编程语言呢 xff1f 因为 JVM 是一个非常好的平台 xff0c 而且 Java 程序员目前在中国
  • kotlin 和java 混编

    如果你之前使用 Java 语言而没有 Kotlin 开发经验 xff0c 不用担心 xff0c Intellij IDEA 会帮你一键转换 xff0c 将 Java 代码转换成 Kotlin 代码 但是反过来就不行了 在 Mac 上 xff
  • Kotlin 基础语法

    Kotlin 文件以 kt 为后缀 包声明 代码文件的开头一般为包的声明 xff1a package com runoob main import java util fun test class Runoob kotlin源文件不需要相匹
  • ‘break‘ not in the ‘loop‘ or ‘switch‘ context

    使用phpexcel导出表格 xff0c 切换到php7 0报错 错误地址 xff1a FILE ThinkPHP Library Vendor phpexcel PHPExcel Calculation Functions php LIN
  • Android数据存储之SQLite

    概览 l 概述 l CRUD方法详解 l 注意事项 概述 对于大量数据的处理 xff0c 如果不想将数据存于服务器端 xff0c Android API提供了对关系数据库SQLite的支持 xff0c 在android SDK中tool目录
  • SQLlite在安卓中的基本详解和简单使用

    一 基础介绍 1 SQLite 是一个进程内的库 是一种轻量级的 自给自足的 无服务器的 无需配置的 事务性的SQL数据库引擎 和他其他的数据库一样 xff0c SQLite引擎不是一个独立的进程 xff0c 可以按应用程序需求进行静态或动
  • android开发中的数据库SQLite的使用

    其实学习android很久了 xff0c 关于数据存储 xff0c 之前学习的时候也一同学习过 xff0c 编程这些东西很久没用都忘得差不多了 xff0c 最近做个项目要用到 xff0c 所以又学习了一遍 android中关于数据的存储有好
  • Android图表控件MPAndroidChart——曲线图LineChart的使用(财富收益图)

    目录 前言 本文涉及文章 其他相关文章 1 数据准备 1 1 数据来源 2 曲线展示 2 1 MPAndroidChart获取 2 2 数据对象获取 2 3 数据展示 3 曲线完善 3 1 图表背景 边框 网格线修改 3 2 X Y轴值的自
  • Android图表控件MPAndroidChart——曲线图LineChart的使用(财富收益图)

    目录 前言 本文涉及文章 其他相关文章 1 数据准备 1 1 数据来源 2 曲线展示 2 1 MPAndroidChart获取 2 2 数据对象获取 2 3 数据展示 3 曲线完善 3 1 图表背景 边框 网格线修改 3 2 X Y轴值的自
  • SQLiteOpenHelper使用详解

    SQLiteOpenHelper 的子类 xff0c 至少需要实现三个方法 xff1a 1 构造函数 调用父类 SQLiteOpenHelper 的构造函数 这个方法需要四个参数 xff1a 上下文环境 xff08 例如 xff0c 一个
  • SQLiteOpenHelper的简单使用

    由于想学习GreenDao框架 xff0c 但是看了一下有的蒙圈 xff0c 所以先熟悉一下android原生的SQLiteOpenHelper的使用工具 xff1a SQLite Expert Personal SQLite Expert
  • android SQLiteOpenHelper 使用

    1 实体 package mydemo mycom demo2 entity public class UserInfo private int id private String username private String passw