加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

数据存储方式——SQLite

发布时间:2020-12-12 19:36:52 所属栏目:百科 来源:网络整理
导读:如果想要在android中使用数据库,使用SQLite是一个非常好的选择,因为它是android内置的数据库,提供了很多支持。 数据库的使用无非就是CRUD,也就是"Create,Read,Update,Delete"这四个基本操作。 下面就介绍一个简单的SQLite写的一个记事本实例来说明吧 首先

如果想要在android中使用数据库,使用SQLite是一个非常好的选择,因为它是android内置的数据库,提供了很多支持。

数据库的使用无非就是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()时,就会真正创建数据库。

对于更新数据库版本这里没有做。

下面就是关于数据的增删改查


基本的操作都有了,再就是注意注册文件。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读