Sqlite数据库增删查改操作

1、SqliteOpenHelper为数据库抽象类,需创建一个类继承他,其中有onCreate创建数据库的抽象方法和onUpgrade升级数据库方法(一般用不上)。

 1 //创建数据库的类
 2 //SQLiteOpenHelper抽象类  onCreate和onUpgrade抽象方法
 3 public class MySqliteHelper  extends SQLiteOpenHelper {
 4
 5     //新建数据库以及表
 6     private String SqlCpData="create table TableCpData(id integer primary key autoincrement,"
 7             + "cp_num varchar(20),time varchar(20));";
 8
 9
10     public MySqliteHelper (Context context) {
11         this(context, "tableCpData.db", null, 1);
12     }
13
14     public MySqliteHelper(Context context, String name, CursorFactory factory, int version) {
15         super(context, name, factory, version);
16         // TODO Auto-generated constructor stub
17     }
18
19     //创建数据库抽象方法
20     @Override
21     public void onCreate(SQLiteDatabase db) {
22         // TODO Auto-generated method stub
23         db.execSQL(SqlCpData);  //执行新建数据库操作
24         Log.i(SqlCpData, "数据库创建成功");
25     }
26
27     //升级数据库
28     @Override
29     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
30         // TODO Auto-generated method stub
31
32     }
33
34
35 }

2、然后创建一个方法类,用来定义获取操作以及时间的方法

//定义获取操作以及时间的方法
public class Rule {

    public int id;
    public String cp_num;
    public String time;

    //获取ID
    public int  getid() {
        return id;
    }
    //设置ID
    public void setId(int id) {
        this.id=id;
    }

    public String getCpNum() {
        return cp_num;
    }

    public void setCpNum(String cp_num){
        this.cp_num=cp_num;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time=time;
    }

    //该类的方法
    public Rule(int id, String cp_num, String time) {
        super();
        this.id = id;
        this.cp_num = cp_num;
        this.time = time;
    }

    public Rule() {
        super();
    }

}

3、然后创建数据库的一个增删查改类

//数据库的增删查改操作
public class CpDataDao {

    private MySqliteHelper mySqliteHelper;  //定义数据库操作函数

    public CpDataDao(Context context) {

        mySqliteHelper=new MySqliteHelper(context); //实例化数据库操作函数
    }

    //插入数据库
    public long insert(String cp_num,String time)
    {
        //实例化SQLiteDatabase对象
        SQLiteDatabase database=mySqliteHelper.getWritableDatabase();
        ContentValues contentValues=new ContentValues();
        contentValues.put("cp_num", cp_num);
        contentValues.put("time", time);
        return database.insert("TableCpData", null, contentValues);
        //表明 、空列的默认值、插入封装的列名称和列值
    }
    private Rule rule=null;
    //存储数据的集合
    private List<Rule> dataList = null;

    /**
     * 查询所有数据
     *
     * @return 数据集合
     */

    public List<Rule> queryAll() {
        SQLiteDatabase db = mySqliteHelper.getReadableDatabase();
        Cursor cursor = db.query("TableCpData",
                new String[] { "id", "cp_num", "time" }, null, null, null, null,
                null);
        if (cursor != null && cursor.getCount() > 0) {
            dataList = new ArrayList<Rule>();
            while (cursor.moveToNext()) {
                rule = new Rule();
                rule.setId(cursor.getInt(0));
                rule.setCpNum(cursor.getString(1));
                rule.setTime(cursor.getString(2));
                dataList.add(rule);
            }
        }
        return dataList;
    }

    /**
     * 删除所有数据
     * @return    0 删除成功,1删除失败
     */
    public int deleteAll() {
        try {
            SQLiteDatabase db = mySqliteHelper.getWritableDatabase();
            // return db.delete("student", null, null);
            String sql = "delete from TableCpData";
            db.execSQL(sql);
            return 0;
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return 1;
    }

}

还有一些按条件进行查询的操作,注意修改数据库名和表明要和上面的一致

    /**
     * 查询时间
     *
     * @return 数据集合
     */
    //查询数据的集合
//    List<Rule> timeList=null;
    public List<Rule> queryTimerecord(final String time) {
        SQLiteDatabase db = dsOpenHelper.getReadableDatabase();
        String sqluser = "select * from ruledata where  time like ? ";
        String [] Sqlselect = new String[] {
                "%" + time + "%",
        };
        Cursor cursor =db.rawQuery(sqluser, Sqlselect);
        if (cursor != null && cursor.getCount() > 0) {
        //    UserPassward = new ArrayList<User>();
            while (cursor.moveToNext()) {
                Rule rule = new Rule();
                rule.setId(cursor.getInt(0));
                rule.setOperation(cursor.getString(1));
                rule.setTime(cursor.getString(2));
                //UserPassward.add(user);
                dataList.add(rule);
            }
        }
        return dataList;
    }

4、最后在自己的类中对这些方法进行调用操作,就可以实现Sqlite的增删查改操作了

比方说对下位机收到的数据进行插入数据

(1)先在类全局变量中声明类

private CpDataDao cpDataDao=new CpDataDao(this); //数据库增删查改类

(2)然后调用该类的方法进行插入数据

cpDataDao.insert(device.getName(), time());  //插入一个设备的名称和当前系统时间

(3)  (2)中time获取当前系统时间方法

    //获取系统时间函数
    private String time() {
        SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
        Date curDate = new Date(System.currentTimeMillis());//获取当前时间
        String str_time = formatter.format(curDate);
        return str_time;
    }

5、查询数据的操作也是类似,通过类来调用方法,这里是将查询到的数据显示在一个textView界面中

(1)  声明

private CpDataDao cpDataDao=new CpDataDao(this);
    private CpDataDao deleDataDao=new CpDataDao(this);

private LinearLayout llcontent;
    private TextView tv;

(2)查询所有的方法

    //查询所有充电记录
    private void queryAll() {
        //mListView.removeAllViews();
        llcontent.removeAllViews();
        List<Rule> dataList=cpDataDao.queryAll();
        if (dataList!=null) {
            for(Rule rule:dataList) {
                tv=new TextView(this);
                //mListView=new ListView(mContext);
            //    list.add(new deviceListItem("充电桩:"+rule.getCpNum()+"时间:"+rule.getTime(), true));
                tv.setText("\t"+rule.getid()+"."+"充电桩:"+rule.getCpNum()+"  "+"Time:"+rule.getTime()+"\n");
                tv.setTextColor(Color.BLUE);
                tv.setTextSize(16);
                llcontent.addView(tv);
                Log.i("数据库数据",""+rule.getCpNum()+rule.getTime());
            }
            Log.i("数据库查询","查询数据库成功");
        }

    }

(3)删除所有

        btnDelected.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                llcontent.removeAllViews();
                //deleDataDao.deleteAll();
                int line=deleDataDao.deleteAll();
                if (line==0) {
                    Log.i("所有数据删除成功", ""+line);
                    Toast.makeText(mContext, "所有数据成功删除", Toast.LENGTH_SHORT).show();

                } else {
                    Toast.makeText(mContext, "当前没有数据", Toast.LENGTH_SHORT).show();
                }

            }
        });

原文地址:https://www.cnblogs.com/guanglili/p/9078665.html

时间: 2024-10-10 09:47:52

Sqlite数据库增删查改操作的相关文章

YII数据库增删查改操作

初学YII, 整理了一些YII数据库的相关操作,  共同学习,共同进步. 一.查询数据集合 1 //1.该方法是根据一个条件查询一个集合 2 $admin=Admin::model()->findAll($condition,$params); 3 $admin=Admin::model()->findAll("username=:name",array(":name"=>$username)); 4 5 //2. findAllByPk(该方法是

SQLite在Android程序中的使用方法,SQLite的增删查改方法

Sqlite: 1.一款用来实现本地数据存储的轻量级数据管理工具,是众多用来实现数据库管理的工具之一. 2.Android已经将SQLite的代码功能吸收在它的系统中,我们可以直接在Android程序中使用SQLite的语句来创建数据库,并实现数据库的增删查改 SQLite的简单使用方法: 如何获得一个数据库的class模板,并设定数据库里的数据结构: 自己新建一个类,继承SQLiteOpenHelper,并重写构造方法,oncreate(),onUpgrade() 自定义类的代码实现方法和构造

数据库的连接与简单的ATM增删查改操作

连接数据库有两种方式,直连和桥连,这里作者只讲一下普遍的直连,桥连读者想知道请自行百度 首先要有驱动软件,笔者的工具很旧 在你的java项目里面创建一个文件夹lib,将jar文件复制到里面,右键点击jar文件→Build Path→Configure Build Path→ 添加找到lib目录下的jar文件 确定 则会出现奶瓶,这样驱动就弄好的,下面开始连接 请注意里面所有的包都是java.sql下的 ,其中root是你的mysql账号,610321520是你的mysql的密码,3306是mys

django models进行数据库增删查改

引入models的定义 from app.models import  myclass class  myclass(): aa =  models. CharField (max_length=None) bb =  models. CharField (max_length=None) def __unicode__(self): return u'%s %s' %(aa,bb) 增 添加一行数据1 add = myclass(aa='wahaha',bb='hahawa' ) add.sa

myBatis 实现用户表增删查改操作&lt;方法1 没有使用接口的&gt;(最终版)

在UserMapper.xml中添加增删改查 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- 如果我要调用mapper文件,就去拿到names

go iris xorm包使用(sqlite3数据库增删查改)

官网https://studyiris.com/example/orm/xorm.html例子,稍做修改 1.我是win64,但没有遇到mingw问题,应该是之前安装过gcc环境,参考:测试一下robotgo自动化操作,顺便解决了原来的mingw版本中只有gcc,没有g++的问题 2.将其中的字段名.字段内容改为中文,并按id访问数据表中的行,没遇到乱码问题,很好. 代码如下: //包主显示如何在您的Web应用程序中使用orm //它只是插入一列并选择第一列. package main impo

myBatis 实现用户表增删查改操作&lt;方法2 加入接口&gt;(最终版)

这2种方法的区别:1.添加接口 2.运用接口来实现 其他的都一样 添加接口 //接口的名字和xml的名字一样,这样xml中的namespace就不用改 public interface UserMapper { //接口名的方法名一定要和xml中的id名一样 public int count(); public void add(User user); public void update(User user); public void delete(User user); public Lis

基础入门_Python-模块和包.深入SQLAlchemy之玩转各种增删查改操作?

增加数据: # 单行数据(from sqlalchemy import ...) conn = engine.connect() # 方式一: 调用表对象的insert ins = cookies.insert().values(     cookie_name='chocolate chip',     cookie_recipe_url='http://some.aweso.me/cookie/recipe.html',     cookie_sku='CC01',     quantity

java对链表增删查改操作API

从c++方向搞点java副业.结果在静态链表这里绊了一跤.感谢巨人们的肩膀重见天日. 希望后来人少走些弯路. 废话少说,直接贴代码: 1.创建链表的节点类 public class Node { private Node node; private Object eleme; public void setEleme(Object eleme) { this.eleme = eleme; } public Node(){ this.eleme = null;node = null; } publ