用SQLiteOpenHelper类存储数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linzhihan7410/article/details/53439595

Android平台提供给我们一个数据库辅助类来创建或打开数据库,这个辅助类继承自SQLiteOpenHelper类
SQLiteOpenHelper创建的数据库所在位置是在:
手机内存盘里的根目录下/data/data/应用软件包名/databases/

SQLiteOpenHelper类的应用:
流程:
一.创建数据库
二.关闭数据库(在页面关闭的时候使用)
三.创建表
四.添加数据
五.查看数据
六.更新数据
七.把数据和SimpleCursorAdapter适配器绑定
UI设计:主界面 这里写图片描述(只提供图片,可自行布局)
ListView item代码(创建一个layout文件,用于Adapter使用的模板布局)

<?xml version="1.0" encoding="utf-8"?>
    <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:columnCount="3">

    <TextView
        android:id="@+id/id1"
        android:layout_width="60dp"
        android:layout_height="20dp"
        android:layout_gravity="center"
        android:text="Number"/>
    <TextView
        android:id="@+id/id2"
        android:layout_width="80dp"
        android:layout_height="20dp"
        android:layout_gravity="center"
        android:text="Type Name"/>
    <TextView
        android:id="@+id/id3"
        android:layout_width="80dp"
        android:layout_height="20dp"
        android:layout_gravity="center"
        android:text="Place Name"/>
    <TextView
        android:id="@+id/id4"
        android:layout_width="60dp"
        android:layout_height="20dp"
        android:layout_gravity="center"
        />
    <TextView
        android:id="@+id/id5"
        android:layout_width="60dp"
        android:layout_height="20dp"
        android:layout_gravity="center"
        />
    <TextView
        android:id="@+id/id6"
        android:layout_width="60dp"
        android:layout_height="20dp"
        android:layout_gravity="center"
       />
</GridLayout>

Java代码:

//新建一个类文件并且继承SQLiteOpenHelper
    public class SqlLite extends SQLiteOpenHelper{
    //系统生成的构造方法
    public SqlLite(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }
    //创建表
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        try {
            //sql语句(可以参考上一篇博客),注意id需要加上_,这是要使用SimpleCursorAdapter的规定
            String sql = "create table Goods(_id integer PRIMARY KEY,name text,place text)";
            sqLiteDatabase.execSQL(sql);
        }catch (Exception e){
            System.out.println(e.getMessage());
        }
    }
    //添加数据方法
    public void addData(String s1,String s2){
        try {
            //sql语句 添加数据
            String sql = "insert into Goods(name,place) values(?,?)";
            getReadableDatabase().execSQL(sql, new Object[]{s1, s2});
        }catch (Exception e){
            System.out.println(e.getMessage());
        }
    }
    //查看数据 返回Cursor
    public Cursor check(){
        Cursor cursor = null;
        try{
            //sql语句 查找这个表
            String sql = "select * from Goods";
            cursor = getReadableDatabase().rawQuery(sql,null); //需要表里面所有的数据
        }catch (Exception e){
            System.out.println(e.getMessage());
        }
        return cursor;
    }
    //更新版本
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
        System.out.println("oldVersion:"+i+" newVersion"+i1);
    }
}
-----------------------------------------------------------------------------------
    //主页面 MainActivity文件
    public class SqlLiteOpenHelperActivity extends Activity {
    //创建一个SqlLite对象
    private SqlLite db;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sql_lite_open_helper);
        //调用SQLiteOpenHelper数据库类  SqlLite为自定义的类,继承于SQLiteOpenHelper
        db = new SqlLite(this,"sql.db",null,1);
    }
    //关闭页面
    @Override
    protected void onDestroy() {
        super.onDestroy();
        db.close();   //关闭数据库
    }
    //添加数据按键事件
    public void addOnClick(View v){
        //得到EditText,接收用户输入的数据,调用SQLiteOpenHelper数据库类里的addData方法,传入得到的数据
        EditText nameEd = (EditText) findViewById(R.id.typeNameEd);
        EditText placeEd = (EditText) findViewById(R.id.placeNameEd);
        String s1 = nameEd.getText().toString();
        String s2 = placeEd.getText().toString();
        db.addData(s1,s2);
    }
    //查看数据按键事件
    public void checkOnClick(View v){
        //调用SQLiteOpenHelper数据库类里的check方法,得到cursor对象
        Cursor cursor = db.check();
        //创建SimpleCursorAdapter 把数据和SimpleCursorAdapter适配器绑定
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(
                this,                                   //当前类
                R.layout.goods,                         //呈现数据的布局文件 就是上面item代码
                cursor,                                 //从数据库获得的数据
                new String[]{"_id","name","place"},     //要显示的列名 
                new int[]{R.id.id4,R.id.id5,R.id.id6},  //显示的数据所对应的控件
                0                                       //0表示不监听数据变化 如果要监听,需要加上监听事件
        );  
        //得到主页面的ListView
        ListView listView = (ListView) findViewById(R.id.listView);
        //加载设置到adapter
        listView.setAdapter(adapter);
    }
}

猜你喜欢

转载自blog.csdn.net/linzhihan7410/article/details/53439595
今日推荐