技术开发 频道

在Android中创建和使用数据库

  使用数据库

  现在你已经可以利用创建的辅助类来使用数据库了,在DatabaseActivity.java文件中,创建一个DBAdapter类的实例:

 package net.learn2develop.Database;

  import android.app.Activity;

  import android.os.Bundle;

  
public class DatabaseActivity extends Activity {

  
/** Called when the activity is first created. */

  
@Override

  
public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  DBAdapter db
= new DBAdapter(this);

  }

  }

  增加一个标题

  如果想在titles表中增加一个标题,可以使用DBAdapter类的insertTitle()方法:

@Override

  
public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  DBAdapter db
= new DBAdapter(this);

  
//---add 2 titles---

  db.
open();

  
long id;

  id
= db.insertTitle(

  "
0470285818",

  "C#
2008 Programmer's Reference",

  "Wrox");

  id = db.insertTitle(

  "047017661X",

  "Professional Windows Vista Gadgets Programming",

  "Wrox");

  db.close();

  }

  insertTitle()方法返回插入行的ID,如果在添加过程中遇到错误,它就返回-1。

  如果你分析Android设备/模拟器的文件系统,你可以看到book数据库创建在database文件夹下,如图3所示。

  图3 database文件夹

  检索所有标题

  想要检索titles表中的所有标题,可以使用DBAdapter类的getAllTitles()方法,如清单5所示。

  清单5 使用DBAdapter类的getAllTitles()方法检索titles表中的所有标题

package net.learn2develop.Database;

  import android.app.Activity;

  import android.
database.Cursor;

  import android.os.Bundle;

  import android.widget.Toast;

  
public class DatabaseActivity extends Activity {

  
/** Called when the activity is first created. */

  
@Override

  
public void onCreate(Bundle savedInstanceState)

  {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  DBAdapter db
= new DBAdapter(this);

  
//---获取所有标题---

  db.
open();

  
Cursor c = db.getAllTitles();

  
if (c.moveToFirst())

  {

  do {

  DisplayTitle(c);

  }
while (c.moveToNext());

  }

  db.
close();

  }

  }

  返回的结果是一个Cursor对象,如果要显示所有标题,你首先应该调用Cursor对象的moveToFirst()方法,如果它成功(意味着至少有一行有效),使用DisplayTitle()方法显示详细的标题,要移动到下一个标题,可以调用Cursor对象的moveToNext()方法,下面是DisplayTitle()方法的定义:

public void DisplayTitle(Cursor c)

  {

  Toast.makeText(this,

  "id: "
+ c.getString(0) + "\n" +

  "ISBN: "
+ c.getString(1) + "\n" +

  "TITLE: "
+ c.getString(2) + "\n" +

  "PUBLISHER: "
+ c.getString(3),

  Toast.LENGTH_LONG).show();

  }

   图4显示Toast类,它从数据库中检索并显示一个标题。

  图4 Toast类

0
相关文章