先上一个小程序,具体的解析介绍会在以后的文章中详细说明,已经凌晨0:40了,我实在是困了,只能把这活移到明天了。今天先把代码粘贴上。
效果图:(向数据库中存入数据,然后再把数据读出来)
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/textView" /> </LinearLayout>
activity的代码
package
cn.com.SQLite;
import
java.util.ArrayList;
import
android.app.Activity;
import
android.content.ContentValues;
import
android.content.Context;
import
android.database.Cursor;
import
android.database.sqlite.SQLiteDatabase;
import
android.database.sqlite.SQLiteOpenHelper;
import
android.database.sqlite.SQLiteDatabase.CursorFactory;
import
android.os.Bundle;
import
android.util.Log;
import
android.widget.TextView;
/**
*
*
@author
chenzheng_java
* @description SQLite数据库在android中的应用
*
@since
2011/03/05
*
*/
public
class SQLiteActivity extends Activity {
private String result = "结果:/n";
private String tableName = "chenzheng_Java";
publicstaticfinalint version_1 = 1;
@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
run();
TextView textView = (TextView) findViewById(R.id.textView);
textView.setText(result);
}
/**
*@description 对数据进行增删改查
*/privatevoid run() {
clear();
save();
read();
}
/**
* 从数据表中读出记录
*/privatevoid read() {
MySqliteOpenHandler handler = new MySqliteOpenHandler(this, tableName,
null, version_1);
SQLiteDatabase database = handler.getWritableDatabase();
Cursor cursor = database.query(tableName, null, null, null, null, null,
null);
int count = cursor.getCount();
Log.i("通知", "总记录数" + count);
int index = cursor.getColumnIndex("name");
Log.i("通知", "nameIndex" + index);
int indexOfAge = cursor.getColumnIndex("age");
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
Log.i("通知", "here");
String name = cursor.getString(index);
result += "/n 姓名:" + name;
int age = cursor.getInt(indexOfAge);
result += " 年龄:" + age;
cursor.moveToNext();
}
database.close();
}
/**
* 保存一些数据到表中
*/privatevoid save() {
ArrayList<Beauty> beautyList = getData();
MySqliteOpenHandler handler = new MySqliteOpenHandler(
SQLiteActivity.this, tableName, null, version_1);
SQLiteDatabase database = handler.getWritableDatabase();
for (Beauty beauty : beautyList) {
// 开始事物 database.beginTransaction();
// 以键值对形式存储列名和值的对象
ContentValues contentValues = new ContentValues();
contentValues.put("name", beauty.getName());
contentValues.put("age", beauty.getAge());
long flag = database.insertOrThrow(tableName, "age", contentValues);
Log.i("通知", beauty.toString());
if (flag == -1) {
Log.i("通知", "insert操作失败");
} else {
database.setTransactionSuccessful();
}
// 结束事物 database.endTransaction();
}
database.close();
}
/**
* 清除表中原有的记录
*/privatevoid clear() {
MySqliteOpenHandler handler = new MySqliteOpenHandler(
SQLiteActivity.this, tableName, null, version_1);
SQLiteDatabase database = handler.getWritableDatabase();
database.delete(tableName, null, null);
database.close();
}
/**
*
* @return 初始化数据
*/private ArrayList<Beauty> getData() {
ArrayList<Beauty> beautyList = new ArrayList<Beauty>();
Beauty beauty = null;
beauty = new Beauty("小医仙", 23);
beautyList.add(beauty);
beauty = new Beauty("萧薰儿", 21);
beautyList.add(beauty);
beauty = new Beauty("杜梅莎女王", 24);
beautyList.add(beauty);
return beautyList;
}
/**
* @author chenzheng_java
* @description 实现我们自己的sqlite的创建及更新帮助类
* @since 2011/03/05
*/privateclass MySqliteOpenHandler extends SQLiteOpenHelper {
public MySqliteOpenHandler(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
Log.i("通知", "MySqliteOpenHandler实例化完毕");
}
/**
* onCreate方法在系统中不存在用户查询的表时执行,我们在这里可以实现该方法并做一些额外的操作
*/
@Override
publicvoid onCreate(SQLiteDatabase db) {
db.execSQL("drop table if exists " + tableName);
db
.execSQL("create table if not exists ‘"
+ tableName
+ "‘ (id INTEGER primary key,name varchar(20),age INTEGER)");
Log.i("通知", "创建表成功!");
}
/**
* onUpgrade方法在系统中应用版本发生改变的时候执行
*/
@Override
publicvoid onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.i("通知", "版本升级成功!");
}
}
/**
*
* @author chenzheng_Java
* @description 美人实体类
*/privateclass Beauty {
String name;
int age;
public Beauty() {
}
public Beauty(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
publicvoid setName(String name) {
this.name = name;
}
publicint getAge() {
return age;
}
publicvoid setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Beauty [age=" + age + ", name=" + name + "]";
}
}
}
其他都为默认。运行,便可得到如上结果。
------------------------------------------------------------------------
这里请注意一点,MySqliteOpenHandler该类的构造方法中,第二个参数,实际上代表的是数据库的名字,而并非表名称,这里直接使用了表名进行构建,是为了让代码看的稍微少些,也满足下笔者偷懒的欲望,呵呵。切记 切记
原文:http://www.cnblogs.com/a354823200/p/4008423.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!