SQLite数据库的使用详解2

SQLite数据库的使用详解2,第1张

概述SQLite是一个小型的数据库,占用资源低,处理速度快等优点。 首先新建一个MySQLiteOpenHelper类然后继承SQLiteOpenHelper。新建一个构造方法,里面有四个参数,第二个是数据库的名字,可命名为xx.db,第三个factory 游标工厂 用来创建一个游标默认值是null,第四个参数是版本号,最低为1.onCreate只有第一次创建的时候才会执行,onUpgrade是版本更

sqlite是一个小型的数据库,占用资源低,处理速度快等优点。

首先新建一个MysqLiteOpenHelper类然后继承sqliteOpenHelper。新建一个构造方法,里面有四个参数,第二个是数据库的名字,可命名为xx.db,第三个factory 游标工厂 用来创建一个游标默认值是null,第四个参数是版本号,最低为1.onCreate只有第一次创建的时候才会执行,onUpgrade是版本更新的时候才会调用。

db.execsql("create table student1(_ID integer primary key autoincrement,name varchar(20),gender varchar(30))");
这里是创建一个student1 的数据库,有ID、key、name、gender,这个可根据自己需求定义。
下面是完整代码

package com.example.apple.sqlitedemo;import androID.content.Context;import androID.database.sqlite.sqliteDatabase;import androID.database.sqlite.sqliteOpenHelper;import androID.util.Log;/** * Created by apple on 16/12/28. */public class MysqLiteOpenHelper extends sqliteOpenHelper{    private final String TAG = "MysqLiteOpenHelper";    public MysqLiteOpenHelper(Context context) {        //name数据库名字,        //factory 游标工厂 用来创建一个游标默认值是null        //version 版本号 最低1        super(context,"student.db",null,4);    }    /**     * 只有第一次创建的时候才调用执行     * @param db     */    @OverrIDe    public voID onCreate(sqliteDatabase db) {        Log.e(TAG,"onCreate");        db.execsql("create table student1(_ID integer primary key autoincrement,gender varchar(30))");    }    /**     * 数据库版本更新时调用     * @param db     * @param oldVersion     * @param newVersion     */    @OverrIDe    public voID onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) {        Log.e(TAG,"onUpgrade");    }}

2、新建一个bean类用于存储数据,这里定义了就name 和gen der

package com.example.apple.sqlitedemo.bean;/** * Created by apple on 16/12/28. */public class StudentData {    private String name;    private String gender;    public StudentData(String name,String gender) {        this.name = name;        this.gender = gender;    }    public String getname() {        return name;    }    public voID setname(String name) {        this.name = name;    }    public String getGender() {        return gender;    }    public voID setGender(String gender) {        this.gender = gender;    }}
3、新建一个StudentDao的类用于实现增删改查

首先创建一个构造方法,在构造方法中初始化sqliteOpenHelper,用于新建一个数据库,具体实现方法可看代码,注释得很详细了

package com.example.apple.sqlitedemo.dao;import androID.content.Context;import androID.database.Cursor;import androID.database.sqlite.sqliteDatabase;import androID.util.Log;import com.example.apple.sqlitedemo.MysqLiteOpenHelper;import com.example.apple.sqlitedemo.bean.StudentData;import java.util.ArrayList;import java.util.List;/** * Created by apple on 16/12/28. */public class StudentDao {    public MysqLiteOpenHelper MysqLiteOpenHelper;    private final String TAG = "StudentDao";    //创建构造方法,在构造方法中初始化sqliteOpenHelper    public StudentDao(Context context) {        MysqLiteOpenHelper = new MysqLiteOpenHelper(context);    }    /**     * 往数据库中添加数据     * @param name     * @param gender     */    public voID add(String name,String gender){        sqliteDatabase db = MysqLiteOpenHelper.getWritableDatabase();        //? 为占位符        db.execsql("insert into student1(name,gender) values(?,?)",new Object[]{name,gender});                db.close();//关闭数据库    }    /**     * 删除数据     * @param name     */    public voID delete(String name){        sqliteDatabase db = MysqLiteOpenHelper.getWritableDatabase();        db.execsql("delete from student1 where name = ?",new Object[]{name});        db.close();//关闭数据库    }    /**     * 更新数据库数据     * @param name     * @param gender     */    public voID update(String name,String gender){        sqliteDatabase db = MysqLiteOpenHelper.getWritableDatabase();        db.execsql("update student1 set gender = ? where name = ?",new Object[]{gender,name});        db.close();//关闭数据库    }    /**     * 查询数据库数据     * @return     */    public List<StudentData> query(){        List<StudentData> studentDatas = new ArrayList<>();        sqliteDatabase db = MysqLiteOpenHelper.getWritableDatabase();        //通过rawquery 查询拿到一个cursor        Cursor cursor = db.rawquery("select * from student1",new String[]{});        //通过cursor获取所在的索引值        while (cursor.movetoNext()) {            String name = cursor.getString(cursor.getColumnIndex("name"));            String gender = cursor.getString(cursor.getColumnIndex("gender"));            studentDatas.add(new StudentData(name,gender));            Log.e(TAG,"name="+name+" gender="+gender);        }        return studentDatas;    }}
4、最后引用测试是否可以实现功能,先写一个测试布局

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:ID="@+ID/activity_main"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:orIEntation="vertical"        >    <EditText        androID:ID="@+ID/input_data"        androID:layout_wIDth="match_parent"        androID:layout_height="wrap_content" />    <button        androID:ID="@+ID/add"        androID:layout_margintop="10dip"        androID:layout_wIDth="match_parent"        androID:layout_height="wrap_content"        androID:text="添加" />    <button        androID:ID="@+ID/delete"        androID:layout_margintop="10dip"        androID:layout_wIDth="match_parent"        androID:layout_height="wrap_content"        androID:text="删除" />    <button        androID:ID="@+ID/update"        androID:layout_margintop="10dip"        androID:layout_wIDth="match_parent"        androID:layout_height="wrap_content"        androID:text="修改" />    <button        androID:ID="@+ID/query"        androID:layout_margintop="10dip"        androID:layout_wIDth="match_parent"        androID:layout_height="wrap_content"        androID:text="查找" /></linearLayout>
初始化StudentDao后就可以调用里面的方法测试,具体代码

package com.example.apple.sqlitedemo;import androID.support.v7.app.AppCompatActivity;import androID.os.Bundle;import androID.util.Log;import androID.vIEw.VIEw;import androID.Widget.button;import androID.Widget.EditText;import com.example.apple.sqlitedemo.bean.StudentData;import com.example.apple.sqlitedemo.dao.StudentDao;import java.util.List;public class MainActivity extends AppCompatActivity implements VIEw.OnClickListener{    //private MysqLiteOpenHelper helper;    private button add;    private button delete;    private button update;    private button query;    private EditText inputData;    private final String TAG = "MainActivity";    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_main);       initVIEw();    }    private voID initVIEw() {        /**         * name 数据库名字         * mode 权限模式         * factroy 游标工厂         *///        sqliteDatabase db = this.openorCreateDatabase("ning",MODE_PRIVATE,null);//        db.execsql("create table student(_ID integer primary key autoincrement,name varchar(30),sex varchar(30))");//        db.execsql("insert into student (name,sex) values(?,new Object[18]);        //实例化sqliteOpenHelper对象,这个时候数据库还没创建出来       // helper = new MysqLiteOpenHelper(this);        //创建一个可读可写数据库       // sqliteDatabase writeDatabase = helper.getWritableDatabase();        //创建一个只可读的数据库        //sqliteDatabase readDatabase = helper.getReadableDatabase();        add = (button)findVIEwByID(R.ID.add);        add.setonClickListener(this);        delete = (button)findVIEwByID(R.ID.delete);        delete.setonClickListener(this);        update = (button)findVIEwByID(R.ID.update);        update.setonClickListener(this);        query = (button)findVIEwByID(R.ID.query);        query.setonClickListener(this);        inputData = (EditText)findVIEwByID(R.ID.input_data);    }    @OverrIDe    public voID onClick(VIEw v) {        StudentDao dao = new StudentDao(this);        switch (v.getID()){            case R.ID.add:                dao.add("张三","男");                dao.add("李四","男");                dao.add("小明","女");                break;            case R.ID.delete:                dao.delete("小明");                break;            case R.ID.update:                dao.update("李四","女");                break;            case R.ID.query:               List<StudentData> query = dao.query();                for (StudentData studentData : query){                    Log.e(TAG,"学生姓名="+studentData.getname()+ "\n学生性别="+studentData.getGender());                }                break;            default:                break;        }    }}

最后代码下载地址是: http://download.csdn.net/detail/u011324501/9724044 总结

以上是内存溢出为你收集整理的SQLite数据库的使用详解2全部内容,希望文章能够帮你解决SQLite数据库的使用详解2所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1164672.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存