数据存储方式——SQLite
2015-11-07 11:59
274 查看
如果想要在android中使用数据库,使用SQLite是一个非常好的选择,因为它是android内置的数据库,提供了很多支持。
数据库的使用无非就是CRUD,也就是"Create,Read,Update,Delete"这四个基本操作。
下面就介绍一个简单的SQLite写的一个记事本实例来说明吧
首先看一下效果图:
完成这个的主要看几个activity
先看这个添加单词的这个activity吧的代码:
这里需要注意的是
这里的传的参数是在另一个activity中传输过来的
这里还用到了一个确定操作:
还有一个delete操作:
下面的Activity就是查看所有数据库中的数据的那个activity操作了
首先看这个是将数据库中的内容通过listview给显示出出来,下面就是往里面绑定数据
还有就是在我们点击listview中的item一条条数据是能够准确的找到并跳转到编辑Activity中去
下面就是最关键的一个关于数据库的各种操作了,把它单独写了一个类DirayDbAdapter
使用SQLiteOpenHelper
SQLiteOpenHelper是SQLiteDatabse的一个帮助类,用来管理数据的创建和版本更新。一般的用法是定义一个类继承SQLiteOpenHelper,并实现两个回调方法,OnCreate(SQLiteDatabase
db)和onUpgrade(SQLiteDatabse, int oldVersion, int newVersion)来创建和更新数据库
SQLiteOpenHelper是一个抽象的数据库操作类,首先执行的是OnCreate,这里我们可以执行创建表等动作,但该方法并没有真正创建数据库,创建数据库是在以下的情况:
调用getWritableDatabase()或者getReadableDatabase()时,就会真正创建数据库。
对于更新数据库版本这里没有做。
下面就是关于数据的增删改查
基本的操作都有了,再就是注意注册文件。
数据库的使用无非就是CRUD,也就是"Create,Read,Update,Delete"这四个基本操作。
下面就介绍一个简单的SQLite写的一个记事本实例来说明吧
首先看一下效果图:
完成这个的主要看几个activity
先看这个添加单词的这个activity吧的代码:
import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; /** * @author zhangvalue * @Date 2015年11月4日 下午8:21:39 * */ public class ActivityDiaryEdit extends Activity{ private EditText mTitleText; private EditText mBodyText; private Long mRowId = null; private DiaryDbAdapter mDbHelper; private Context mcontext =this; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); mDbHelper = new DiaryDbAdapter(this);//获得一个DiaryDbAdapter对象 mDbHelper.open(); setContentView(R.layout.diary_edit);//加载布局文件 mTitleText = (EditText) findViewById(R.id.title);//获得组件id mBodyText = (EditText) findViewById(R.id.body); Button confirmButton = (Button) findViewById(R.id.confirm); Button deletButton = (Button) findViewById(R.id.delet); Bundle extras = getIntent().getExtras(); if(extras !=null){ String title = extras.getString(DiaryDbAdapter.KEY_TITLE); String body = extras.getString(DiaryDbAdapter.KEY_BODY); mRowId = extras.getLong(DiaryDbAdapter.KEY_ROWID); if(title !=null){ mTitleText.setText(title); } if(body !=null){ mBodyText.setText(body); } } confirmButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String title = mTitleText.getText().toString().trim(); String body = mBodyText.getText().toString().trim(); if(!title.equals("")&&!body.equals("")){ if(mRowId !=null){ mDbHelper.updateDiary(mRowId, title, body); }else mDbHelper.createDiary(title, body); } finish(); } }); deletButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if(mRowId != null){ mDbHelper.deleteDiary(mRowId); finish(); //Call this when your activity is done and should be closed. The ActivityResult is propagated back to whoever launched you via onActivityResult(). } } }); } }
这里需要注意的是
这里的传的参数是在另一个activity中传输过来的
这里还用到了一个确定操作:
还有一个delete操作:
下面的Activity就是查看所有数据库中的数据的那个activity操作了
import android.app.ListActivity; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.support.v4.widget.SimpleCursorAdapter; import android.view.View; import android.widget.ListView; /** * @author zhangvalue * @Date 2015年11月4日 下午8:21:32 * */ public class ActivityMain extends ListActivity{ private DiaryDbAdapter mDbHelper; private Cursor mDiaryCursor; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.diary_list);//加载布局文件 mDbHelper = new DiaryDbAdapter(this);//创建一个DiaryDbAdapter对象 mDbHelper.open(); mDiaryCursor= mDbHelper.getAllNotes(); String[] from = new String[] {DiaryDbAdapter.KEY_TITLE,DiaryDbAdapter.KEY_CREATED}; int[] to = new int[] {R.id.text1,R.id.created}; SimpleCursorAdapter notes = new SimpleCursorAdapter( this,//参数表示上下文 R.layout.diary_row, //将要加载的布局文件 mDiaryCursor,//数据源,将要填充的数据 from,//一个包含数据库的列的String型数组 to//一个包含布局文件对应组件的id的int型数组 ); setListAdapter(notes); } @Override //需要对position和id进行一个很好的区分 // position指的是点击的这个ViewItem在当前ListView中的位置 // 每一个和ViewItem绑定的数据,肯定都有一个id,通过这个id可以找到那条数据。 protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); Cursor c = mDiaryCursor; c.moveToPosition(position); Intent i = new Intent(this, ActivityDiaryEdit.class); i.putExtra(DiaryDbAdapter.KEY_ROWID, id);//将KEY_ROWID,给存放到Intent对象中 i.putExtra(DiaryDbAdapter.KEY_TITLE, c.getString(c.getColumnIndexOrThrow(DiaryDbAdapter.KEY_TITLE)));//将KEY_TITLE给存放到Intent对象中 /*getColumnIndexOrThrow(String columnName) 从零开始返回指定列名称,如果不存在将抛出IllegalArgumentException 异常。*/ i.putExtra(DiaryDbAdapter.KEY_BODY, c.getString(c.getColumnIndexOrThrow(DiaryDbAdapter.KEY_BODY)));//将KEY_BODY给存放到Intent对象中 startActivity(i); } }这里继承的是ListActivity方便了后面重写onListItenClick()方法
首先看这个是将数据库中的内容通过listview给显示出出来,下面就是往里面绑定数据
还有就是在我们点击listview中的item一条条数据是能够准确的找到并跳转到编辑Activity中去
下面就是最关键的一个关于数据库的各种操作了,把它单独写了一个类DirayDbAdapter
使用SQLiteOpenHelper
SQLiteOpenHelper是SQLiteDatabse的一个帮助类,用来管理数据的创建和版本更新。一般的用法是定义一个类继承SQLiteOpenHelper,并实现两个回调方法,OnCreate(SQLiteDatabase
db)和onUpgrade(SQLiteDatabse, int oldVersion, int newVersion)来创建和更新数据库
SQLiteOpenHelper是一个抽象的数据库操作类,首先执行的是OnCreate,这里我们可以执行创建表等动作,但该方法并没有真正创建数据库,创建数据库是在以下的情况:
调用getWritableDatabase()或者getReadableDatabase()时,就会真正创建数据库。
对于更新数据库版本这里没有做。
下面就是关于数据的增删改查
基本的操作都有了,再就是注意注册文件。
相关文章推荐
- SQLite教程(十一):临时文件
- SQLite中重置自动编号列的方法
- 保护你的Sqlite数据库(SQLite数据库安全秘籍)
- SQLite教程(十):内存数据库和临时数据库
- SQLite 入门教程二 SQLite的创建、修改、删除表
- 详解SQLite中的数据类型
- 详解SQLite中的查询规划器
- C#封装的Sqlite访问类实例
- SQLite中的B-Tree实现细节分析
- SQLite 中文指南之FAQ第1/6页
- SQLite 内存数据库学习手册
- SQLite中的WAL机制详细介绍
- Sqlite数据库里插入数据的条数上限是500
- SQLite速度评测代码
- 简单分析SQLite4的一些设计改变
- C++操作SQLite简明教程
- C#实现Excel导入sqlite的方法
- C#调用SQLite的方法实例分析
- sqlite时间戳转时间语句(时间转时间戳)
- SQLite教程(四):内置函数