上两节中知道了SQLite数据库和SQLiteOpenHelper的一些基本用法,但还是不知道怎么去应用它们。本节将通过简单的实例来应用它们的一些方法。

  首先,来看一下这个例子中的所有界面,主界西如图7.7所示,添加界面如图7.8所示,显示界面如图7.9所示,删除记录界面如图7.10所示。 

  上面的4个界面就是本例所用到的界面。下面简单介绍这4个界面的布局,它们用的布局方式都是线性布局(LinearLayout),主界面显示的内容是一个文本框和一个列表,添加界面是文本框、编辑框和按钮的组合,显示界面就是一个列表而已,删除界面弹出一个对话框。

  我们已经知道了基本的布局,下面来了解这个例子的实现过程。

  (1)构建界面。

  (2)创建数据库和表。

public DBHelperTContext context)^ ‘

//创建一个数据库

super(context, “note.db”, null, 1);

}

@Override

public void onCreate(SQLiteDatabase db) {

〃数据库中没有表时创建一个表

db.execSQL(sql);

I I

  (3)通过界面向表中添加数据。单击“添加”按钮,调用DBHelper中的方法,从而添加数据。

public long insertData(String title,String content){

SQLiteDatabase db = getWritableData

Contentvalues values == new ContentValues();

values.put(TITLE, title);

values.put(CONSENT, content);

return db-insert (TABLE^NAME, null, values); 

界面中的添加数据操作详细代码请参考光盘的源代码,第7章:SQLiteDatabaseDemo\src\

com\com\zhy\database \AddNoteActivity.java 文件。

private EditText titleText;

private EditText contentText;

private Button submitBtn;

private Button resetBtn;

@Override

public void onCreate (Bundle savedinstanceStag) {

super.onCreate(savedlnstanceState);

setTitlef’SQLite—记事本“);

setContentView(R.layout.add);

//通过findViewByld方法获得组律实例

titleText=(EditText) findViewByld(R.id.title);

contentText-(EditText) findViewByld(R.id.content);

submitBtn=(Button) findViewByld(R.id.submit);

resetBtn=(Button) findViewByld(R・id.reset);

//为铐存按钮添加事件

submitBtn.setOnClickListener(new OnClickListener () {

@Override

public void onClick(View v) {

//得到编辑框中的内容

String title = titleText.getText().toStringO;

String content = contentText.getText().toString().trim();

//判断标题是否为空

if(TextUtils.isEmpty(title) I| TextUtils.isEmpty(content)){

//提示 _

Toast.makeText (AddNoteActivity. this,”标题或内容为空,请填

写…”f 5).show();

}else{

//调用数据库的添加方法

DBHelper helper = new DBHelper(AddNoteActivity.this);

long 1 – helper・insertData(title, content);

if (l>0){

//跳转到ShowActivity界面

Intent intent = new Intent ();

intent.setClass(AddNoteActivity.this,

ShowActivity.c丄ass);

startActivity(intent);

Toas七.makeText (AddNoteActivity .this,”添力口 成功!”,

5).show();

}else{

Toast.makeText (AddNoteActivity. this, “添力口失败.…

5).show();

}

}

}

});

//取消按钮

resetBtn.setonClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

titleText.setText(“”);

contentText.setText(“”);

}

});

  (4)显示添加的内容,打开显示界面,就会显示数据库中已有的数据。同时会调用DBHelpr中的查询方法query。

public Cursor query() {

SQLiteDatabase db – getReadableDatabase();

rGturn -rawQuery(“select * from notes”,null);

. i

在列表中显示数据的方法详细代码请参考光盘的源代码,第7章:SQLiteDatabaseDemo\src\

com\com\zhy\database \Show Activity .java 文件。

Private textview; /璽示提醒,没有记录则显示,有就不显示

private Listview listview; //显不内容

@Override

protected void onCreate(Bundle savedinstanceState) {

setTitleC’SQLite—记事本”);

super.onCreate(savedlnstanceState);

setContentView(R.layout.show);

textview = (Textview) findViewByld(R.id.tiptext);

listview = (Listview) findViewByld(R.id.contentList);

final DBHelper helper = new DBHelper(ShowActivity.this);

Cursor c = helper.query();

if(c.getCount()>0){

String [] from ={“title”,”content”};

int [] to^lR.id.TextViewOlzRd.TextViewO2};

final SimpleCursorAdapter adapter = new SimpleCursorAdapter (this, R.layout ・ items,

c, from, to);

listview・setAdapter(adaptor);

}

  (5)删除记录就是删除数据库中的数据,且是根据主键删除的。在界面层时,单击每条记录会弹出一个对话框,单击“确定”按钮,调用DBHelper中的deleteData方法,就会删除数据。

public void deleteData(int id){

SQLiteDatabase db – getWritableDatabase();

db.delete(“notes”, new String[]{String.valueOf(id)});

单击界面中的“确定”按钮,详细代码请参考光盘的源代码,第7章:

SQLiteDatabaseDemo\src\ com\com\zhy\database \Show Activity .j ava 文件。

li”stView. setOnltemClickListener (new OnltemClickList:ener () {

1

s

i

i

1

1

! (^Override j

public void onltemClick(AdapterView<?> parent. View view, i

int position, long id) { |

final long noteld = id; [

builder . setMessage (“真的要删除这天记录吗? ”) j

.setPosi ti veButton (android. R. st ring. ok, new Dialoginterface.!

pnClickListener() <

! , :

, !

@Override j

pub lie void onClick (Dialoginterface dialog, int which):

 helper.deleteData((int)noteld);

//重新查询

Cursor c = helper.query();

String [] from ={ “title” z ”content”};

int [] to={R.id.TextViewOl,R.id.TextViewO2};

SimpleCursorAdapter adapter = new SimpleCursorAdapter

(ShowActivity.this, R.layout.items, cr from, to);

listview,setAdapter(adapter);

Toast .makeText (ShowActivity. this,”删除成功!”,

3).show();

}

}).setNegativeButton(android.R.string.cancel, new Dialog

Hnterface,OnClickListener() {

@Override

public void onClick (Dialoginterface dialog, int which)

{

dialog,dismiss();

}

});

builder.create();

builder.show();

}

});

  “记事本”的实现主要涉及了一个界面组件的方法和事件问题,这些请参考前面的章节。SQLite中的方法主要有execSQL方法、insert方法、rawQuery方法及delete方法。一般对于数据的操作主要包括这些,还有一个update方法这里没有用到,有兴趣的读者可以自己实现这个功能。