数据库在编程中是重要的。我们的许多代码总是使用要处理和保存的数据。就像任何其他编程环境一样,Android也支持数据库编程。你可以使用android,SQLiteDatabase支持的默认数据库。

SQLiteDatabase中的数据库可以包含多个表。假设我们有一个数据库PERSONALDB和一个表BIODATA。 BIODATA的结构是:

_id integer

code string

name string

gender string

_id is for key increment,

代码,名称和性别是用于描述人。

当程序第一次被调用时,我们必须确保数据库和表被打开,如果存在的话。如果没有,那么我们必须创建一个数据库和一个表。作为一个例子从Android记事本示例,这里是类PersonDbHelper操纵表Biodata。

import java.io.FileNotFoundException;

import java.util.ArrayList;

import java.util.List;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.SQLException;

import android.database.sqlite.SQLiteDatabase;

import android.util.Log;

public class PersonDbHelper {

class Row extends Object {

public long _Id;

public String code;

public String name;

public String gender;

}

private static final String DATABASE_CREATE =

"create table BIODATA(_id integer primary key autoincrement, "

+ "code text not null,"

+ "name text not null"

+");";

private static final String DATABASE_NAME = "PERSONALDB";

private static final String DATABASE_TABLE = "BIODATA";

private static final int DATABASE_VERSION = 1;

private SQLiteDatabase db;

public PersonDbHelper(Context ctx) {

try {

db = ctx.openDatabase(DATABASE_NAME, null);

} catch (FileNotFoundException e) {

try {

db =

ctx.createDatabase(DATABASE_NAME, DATABASE_VERSION, 0,

null);

db.execSQL(DATABASE_CREATE);

} catch (FileNotFoundException e1) {

db = null;

}

}

}

public void close() {

db.close();

}

public void createRow(String code, String name) {

ContentValues initialValues = new ContentValues();

initialValues.put("code", code);

initialValues.put("name", name);

db.insert(DATABASE_TABLE, null, initialValues);

}

public void deleteRow(long rowId) {

db.delete(DATABASE_TABLE, "_id=" + rowId, null);

}

public List fetchAllRows() {

ArrayList ret = new ArrayList();

try {

Cursor c =

db.query(DATABASE_TABLE, new String[] {

"_id", "code", "name"}, null, null, null, null, null);

int numRows = c.count();

c.first();

for (int i = 0; i < numRows; ++i) {

Row row = new Row();

row._Id = c.getLong(0);

row.code = c.getString(1);

row.name = c.getString(2);

ret.add(row);

c.next();

}

} catch (SQLException e) {

Log.e("Exception on query", e.toString());

}

return ret;

}

public Row fetchRow(long rowId) {

Row row = new Row();

Cursor c =

db.query(true, DATABASE_TABLE, new String[] {

"_id", "code", "name"}, "_id=" + rowId, null, null,

null, null);

if (c.count() > 0) {

c.first();

row._Id = c.getLong(0);

row.code = c.getString(1);

row.name = c.getString(2);

return row;

} else {

row.rowId = -1;

row.code = row.name= null;

}

return row;

}

public void updateRow(long rowId, String code, String name) {

ContentValues args = new ContentValues();

args.put("code", code);

args.put("name", name);

db.update(DATABASE_TABLE, args, "_id=" + rowId, null);

}

public Cursor GetAllRows() {

try {

return db.query(DATABASE_TABLE, new String[] {

"_id", "code", "name"}, null, null, null, null, null);

} catch (SQLException e) {

Log.e("Exception on query", e.toString());

return null;

}

}

}

在onCreate方法中,您只需要提供以下给出的单个命令来初始化数据库:

… …

Db = new PersonDbHelper(this);

… …

它将尝试首先打开“PersonalDB”。如果它不存在,那么它将创建一个数据库。在这个“PersonDbHelper”类中,您有用于插入,删除,更新,查询表的方法。

这里是参考上面的教程:

您也可以通过:

希望这可以帮助。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。