使用数据库
现在你已经可以利用创建的辅助类来使用数据库了,在DatabaseActivity.java文件中,创建一个DBAdapter类的实例:
package net.learn2develop.
Database
;
import android.app.Activity;
import android.os.Bundle;
public class DatabaseActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DBAdapter db = new DBAdapter(this);
}
}
import android.app.Activity;
import android.os.Bundle;
public class DatabaseActivity extends Activity {
@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();
}
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所示。
检索所有标题
想要检索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 {
@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 ();
}
}
import android.app.Activity;
import android. database . Cursor ;
import android.os.Bundle;
import android.widget.Toast;
public class DatabaseActivity extends Activity {
@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();
}
{
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类,它从数据库中检索并显示一个标题。