Android开发循序渐进实例4--数据库访问例子
来源:互联网 发布:做赌博网站源码 编辑:程序博客网 时间:2024/05/17 23:21
在此实例中,重点展示使用Android平台提供的SQLite数据库访问方式,包括读写访问。
1. 按照如下的配置以及在开发循序渐进实例1中描述的方法创建整个项目Base:
project Name: ExampleFour
Platform: Android2.0;
Application name: ExampleFour
package name: com.example
Activity: MainActivity
Resource file: main.xml
一个TextView属性如下:
TextView
Id: @+id/ContentTextView
Text: Content:
一个EditView:
Id:@+id/EditContent
Text: blank
Layout width: fill_parent
二个Button:
Id: @+id/InsertButton
Text: Insert
Layout width: fill_parent
Id: @+id/ReadButton
Text: Read
Layout width: fill_parent
2. 在MainActivity中首先加入对SQLiteOpenHelper类的重载代码如下(内部类):
public class ExampleDBHelper extends SQLiteOpenHelper {
ExampleDBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase arg0) {
StringBuffer sb = new StringBuffer();
sb.append("Create table ").append(TABLE_NAME);
sb.append("(").append(COLUMN_SN).append(" int not null, ");
sb.append(COLUMN_CONTENT).append(" text not null);");
arg0.execSQL(sb.toString());
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
}
}
3. 在MainActivity中加入如下的常量定义:
public static final int DB_VERSION = 1;
public static final String DB_NAME = "example_content";
public static final String TABLE_NAME = "et_content";
public static final String COLUMN_SN = "sn";
public static final String COLUMN_CONTENT = "content";
4. 在MainActivity中加入如下的变量定义:
private ExampleDBHelper dbHelper = null;
5. 撰写Button的事件响应代码:
private void connect_control_events() {
Button buttonInsert = (Button) findViewById(R.id.InsertButton);
buttonInsert.setOnClickListener(buttonInsert_listener);
Button buttonRead = (Button) findViewById(R.id.ReadButton);
buttonRead.setOnClickListener(buttonRead_listener);
}
private Button.OnClickListener buttonInsert_listener = new Button.OnClickListener() {
public void onClick(View v) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
EditText contentControl = (EditText) findViewById(R.id.ContentEditText);
String strContent = contentControl.getEditableText().toString();
String[] columns = new String[2];
columns[0] = COLUMN_SN;
columns[1] = COLUMN_CONTENT;
Cursor cur = db.query(TABLE_NAME, columns, null, null, null, null, null);
if (cur.getCount() > 0) {
StringBuffer sb = new StringBuffer();
sb.append("update ").append(TABLE_NAME).append(" set ").append(COLUMN_CONTENT);
sb.append("=").append("'").append(strContent).append("'");
db.beginTransaction();
try {
db.execSQL(sb.toString());
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
} else {
StringBuffer sb = new StringBuffer();
sb.append("insert into ").append(TABLE_NAME).append("(").append(COLUMN_SN);
sb.append(",").append(COLUMN_CONTENT).append(")");
sb.append(" values(1, '").append(strContent).append("')");
db.beginTransaction();
try {
db.execSQL(sb.toString());
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
cur.close();
}
}
};
private Button.OnClickListener buttonRead_listener = new Button.OnClickListener() {
public void onClick(View v) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
String[] columns = new String[2];
columns[0] = COLUMN_SN;
columns[1] = COLUMN_CONTENT;
Cursor cur = db.query(TABLE_NAME, columns, null, null, null, null, null);
if (cur.getCount() > 0) {
cur.moveToFirst();
String strContent = cur.getString(1);
EditText contentControl = (EditText) findViewById(R.id.ContentEditText);
contentControl.setText(strContent);
}
}
};
6. 在MainActivity的onCreate函数的末尾加入如下的关联代码:
dbHelper = new ExampleDBHelper(this.getBaseContext());
connect_control_events();
7. 测试,首先在EditText随机输入一些数据,点击Insert随即插入数据,然后停止本程序,重新启动程序,然后点击Read你发现EditText就是前一次输入的数据;
8. 改进,考虑到本程序是个例子,因此将对SQLiteOpenHelper重载放在MainActivity里面以内部类的形式来实现,如果在一个项目中,建议将此类独立出来形成XXXHelper,然后在此类当中实现SQLiteOpenHelper的重载(仍以内部类的形式来实现),这样在XXXHelper里面可以着力实现所有的数据访问代码,实现功能以及模块的统一化。
- Android开发循序渐进实例4--数据库访问例子
- Android开发循序渐进实例5--网络访问例子
- Android开发循序渐进实例2--画面间数据传递例子
- Android开发循序渐进实例3--文件读写例子
- Android开发循序渐进实例3--文件读写例子
- Android开发循序渐进实例1--资源文件设计以及画面跳转例子
- JDBC数据库访问例子
- Android开发入门之数据库例子
- Android开发之数据存储与访问(4)-SQLite数据库
- Coldfusion简单访问数据库例子
- 3.7数据库访问的例子
- Android 数据库访问———日记本实例
- 【Android】SQLite实例(多线程下安全访问数据库)
- Android JNI开发(4)--访问Java的实例变量和静态变量
- Android 访问http实例
- android文件访问实例
- 【Android 开发实例】时间管理APP开发之数据库设计
- VBA访问access数据库实例
- 自毁前程的五种行为
- 民间偏方
- BrowserFormWebPart 显示列表表单
- IE无法获得cookie、ie不支持cookie的解决办法
- day1
- Android开发循序渐进实例4--数据库访问例子
- 统缓存全解析
- SQL Server 2000 “事件探查器”的简单使用
- BC/DR计划
- TweenLite – A Lightweight, FAST Tweening Engine
- abap 双击alv调用事务码
- 在IIS中调试
- poc说明
- CentOS配置vsftpd遇到550错误的解决办法