可以定一个接口,用来存放数据库的名称以及各个字段名:
public interface Constants extends BaseColumns {
public static final String TABLE_NAME="student";
public static final String SID="sid";
public static final String NAME="name";
public static final String SEX="sex";
}
接下来创建一个帮助类,用来表示数据库本身,它负责管理数据库的创建和版本,必须提供一个构造函数并重写两个方法:
//静态导入
import static com.shutao.SQLiteTest.Constants.NAME;
import static com.shutao.SQLiteTest.Constants.SEX;
import static com.shutao.SQLiteTest.Constants.SID;
import static com.shutao.SQLiteTest.Constants.TABLE_NAME;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class StudentData extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "testSQLite";
private static final int DATABASE_VERSION = 1;
public StudentData(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME + "(" + SID
+ " VARCHAR PRIMARY KEY," + NAME + " VARCHAR NOT NULL," + SEX
+ " VARCHAR NOT NULL);");
}
@Override
//当数据库检测到你在引用一个旧数据库时(根据版号判断),它将调用onUpgrate()方法。
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}
接下来编写数据库的操作:
public class SQLite extends Activity {
/** Called when the activity is first created. */
private StudentData sd;
private String columns[] = { SID, NAME, SEX };
private String orderBy = SID + " DESC";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
sd = new StudentData(this);
// 程序一旦运行一次以后变存在了数据库中了,再次运行由于主键的冲突会使程序出现错误
/*
* addStudent("07141218", "林树涛", "M"); addStudent("07141201", "曹育省",
* "F"); addStudent("07141205", "范小桂", "M"); addStudent("07141217",
* "林坚松", "M");
*/
Cursor cursor = getStudents();
showStudents(cursor);
} finally {
sd.close();
}
}
private void addStudent(String sid, String name, String sex) {
// 获得StudetData数据库的一个读/写句柄
SQLiteDatabase db = sd.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(SID, sid);
values.put(NAME, name);
values.put(SEX, sex);
db.insertOrThrow(TABLE_NAME, null, values);
}
private Cursor getStudents() {
SQLiteDatabase db = sd.getReadableDatabase();
Cursor cursor = db.query(TABLE_NAME, columns, null, null, null, null,
orderBy);
this.startManagingCursor(cursor);
return cursor;
}
private void showStudents(Cursor cursor) {
StringBuilder results = new StringBuilder("All students:/n");
while (cursor.moveToNext()) {
String sid = cursor.getString(0);
String name = cursor.getString(1);
String sex = cursor.getString(2);
results.append(sid + " ");
results.append(name + " ");
results.append(sex + "/n");
}
// 显示
TextView view = (TextView) this.findViewById(R.id.result_text);
view.setText(results);
}
}