Android作为目前主流的移动操作系统,完全符合SQLite占用资源少的优势,故在Android平台上,集成了一个嵌入式关系型数据库—SQLite。如果你想要开发 Android 应用程序,一定需要在 Android 上存储数据,使用SQLite 数据库是一种非常好的选择。(引用自百度百科)

下面按照顺序一步一步,创建一个可视化的SQLite应用程序
1.创建一个Db继承自SQLiteOpenHelper类,
SQLiteOpenHelper是一个辅助类来管理数据库的创建和版本。
可以通过继承这个类,实现它的一些方法来对数据库进行一些操作。
所有继承了这个类的类都必须实现下面这样的一个构造方法:
public DatabaseHelper(Context context, String name, CursorFactory factory, int version)
第一个参数:Context类型,上下文对象。
第二个参数:String类型,数据库的名称
第三个参数:CursorFactory类型
第四个参数:int类型,数据库版本

并实现两个虚方法:

   @Override    public void onCreate(SQLiteDatabase db) {      //对象创建时调用    }    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    //数据库版本更新是调用,上面介绍了一个参数int version,通过这个整数值,系统判断是否版本不一致而执行更新操作    }

在onCreate 函数里面我们可以创建数据库的表,语法可以参考SQLite官网的语法

    public void onCreate(SQLiteDatabase db) {        db.execSQL("create table user(_id integer primary key autoincrement," + "name text default \"\"," + "age integer default 0," + "sex text default \"\")");    }

注意!,一定要有 _id字段,不然出现运行期错误
注意!,一定要有 _id字段,不然出现运行期错误
注意!,一定要有 _id字段,不然出现运行期错误

然后我们开始来插入数据和读取数据:打开MainActivity.java(启动的Avtivity),定义字段

    private Db db;    private SQLiteDatabase dbReader;    private SQLiteDatabase dbWriter;

在onCreate函数里对db进行初始化(dbReader和dbWriter最好在使用的时候通过db的方法获得,使用后要及时关闭)

  db=new Db(this,"db",null,1);  //获得dbReader和dbWriter  dbReader=db.getReadableDatabase();  dbWriter=db.getWritableDatabase();

接下来我们要打开activity_main.xml布局文件,加入一个ListView和插入数据的一些控件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity">    <ListView  android:id="@+id/listView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1">    </ListView>    <LinearLayout  android:layout_width="fill_parent" android:layout_height="wrap_content">        <TextView  android:layout_width="wrap_content" android:text="name" android:layout_height="wrap_content"/>        <EditText  android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/etName"/>        <TextView  android:layout_width="wrap_content" android:text="age" android:layout_height="wrap_content"/>        <EditText  android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/etAge"/>        <TextView  android:layout_width="wrap_content" android:text="sex" android:layout_height="wrap_content"/>        <EditText  android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/etSex"/>        <Button  android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="添加" android:id="@+id/btn_add"/>    </LinearLayout></LinearLayout>

然后 我们在MainActivity中获取到其中ListView,Button以及EditText

//声明全局字段    private EditText etName,etSex,etAge;    private Button btn_add;    private ListView listView;

在oncreate中找到findViewById();

        etName= (EditText) findViewById(R.id.etName);        etAge= (EditText) findViewById(R.id.etAge);        etSex= (EditText) findViewById(R.id.etSex);        listView= (ListView) findViewById(R.id.listView);        btn_add= (Button) findViewById(R.id.btn_add);

给listView绑定数据源,这里我们要用到SimpleCursorAdapter,我们使用dbReader.query()查询得到的是一个cursor对象 :

  private SimpleCursorAdapter adapter;
public Cursor query(String table, String[] columns, String selection,String[] selectionArgs, String groupBy, String having,String orderBy);

再利用得到的cursor,创建一个SimpleCursorAdapter

 public SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to)

通过上面两个函数在onCreate里这样写:

dbReader=db.getReadableDatabase();Cursor c= dbReader.query("user", null, null, null, null, null, null);//表示查询表的所有数据adapter=new SimpleCursorAdapter(this,R.layout.list_cell,c,new String[]{"name","age","sex"},new int[]{R.id.tvName,R.id.tvAge,R.id.tvSex});//参数为:当前Activity,列表项布局文件,数据库中的数据项名称集合,数据项绑定到的list_cell中的控件 listView.setAdapter(adapter);//绑定数据

给按钮加上点击事件,在点击事件里面我们进行数据的插入,插入之后我们要刷新视图,所以单独建一个刷新函数refresh():

 btn_add.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //获得dbWriter                dbWriter=db.getWritableDatabase();                ContentValues cv=new ContentValues();                cv.put("name",etName.getText().toString());                cv.put("sex", etSex.getText().toString());                try {                    cv.put("age", Integer.parseInt(etName.getText().toString()));                }catch(Exception e){                    Toast.makeText(MainActivity.this, "age 只能填数字", Toast.LENGTH_SHORT).show();                }                dbWriter.insert("user",null,cv);                dbWriter.close();                refreshView();            }        });

刷新函数

private  void refreshView(){        dbReader=db.getReadableDatabase();        Cursor c= dbReader.query("user", null, null, null, null, null, null);        adapter.changeCursor(c);        dbReader.close();    }

看看效果,
首先添加数据,输入数据:

点击添加:

到这里我们实现了添加和读取,接下来我们实现删除:
我们采取长按列表项删除的方法:为listView设置长按事件监听

listView.setOnLongClickListener(new View.OnLongClickListener() {            @Override            public boolean onLongClick(View v) {                return false;            }        });

我们重写onLongClick方法让它弹出一个AlertDialog,

 public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {            new AlertDialog.Builder(view.getContext()).setNegativeButton("取消", null)                    .setMessage("确定要删除该选择项吗")                    .setTitle("删除操作")                    .setPositiveButton("确定", new DialogInterface.OnClickListener() {                        @Override                        public void onClick(DialogInterface dialog, int which) {                            dbWriter = db.getWritableDatabase();                            Cursor c = adapter.getCursor();                            c.moveToPosition(position);                            dbWriter.delete("user", "_id=?", new String[]{Integer.toString(c.getInt(c.getColumnIndex("_id")))});                            dbWriter.close();                            refreshView();                        }                    })                    .show();            return true;        }

修改的话我们可以按同样思路,我们让ListView设置单击事件监听,弹出AlertDialog,在AlertDialog 点击确定事件中跳转到修改界面,可以和上面的插入操作一样,跳出一个对话框提示是否修改,是:调到另外一个界面修改,修改完成再跳回来

这里我想直接跳出一个自定义的AlertDialog ,里面就包含了输入框和修改和取消按钮:
具体操作在下一篇博客:Android——自定义AlertDialog

更多相关文章

  1. android Service之四:传递复杂数据类型的远程服务
  2. 传智播客—Android(二)数据存储和访问 之文件
  3. Android保存数据几种常用方法解析
  4. Android数据储存
  5. 王家林的81门一站式云计算分布式大数据&移动互联网解决方案课程
  6. Android 封装的数据库管理操作类
  7. Android Sqlite轻量级数据库框架
  8. android的liveview装载数据
  9. Android 将从网络获取的数据缓存到私有文件

随机推荐

  1. android 按home键返回到桌面后,再按桌面应
  2. Gradle build-info.xml not found for mo
  3. Android(安卓)MTK 修改TP参数
  4. android Studio 引用fresco 出现的问题
  5. Android Edittext设置负数以及小数
  6. TextView添加ClickableSpan和LinkMovemen
  7. Android的唤醒锁和键盘锁
  8. Android(安卓)sqlit java层源码分析
  9. android问题(1)
  10. Android(安卓)ExpandableListActivity 学