ch020 Android SQLite3(第一部分)
--------------------------------------------AndroidManifest.xml----------------------------------
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
package="com.ch20"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="15"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name=".ListViewActivity"
android:label="@string/title_activity_main">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
--------------------------------------------Layoutactivity_main.xml-----------------------------
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/add_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="添加数据"/>
<Button
android:id="@+id/delete_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="删除数据"/>
<Button
android:id="@+id/edit_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="修改数据"/>
<Button
android:id="@+id/qyery_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="查询数据"/>
<ListView
android:id="@+id/show_result"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
--------------------------------------------Layoutlist_item.xml----------------------------------
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/view_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="id....."/>
<TextView
android:id="@+id/view_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="name....."/>
</LinearLayout>
--------------------------------------------数据库工具类DBHelper.java---------------------------
packagecom.ch20;
importandroid.content.ContentValues;
importandroid.content.Context;
importandroid.database.Cursor;
importandroid.database.sqlite.SQLiteDatabase;
importandroid.database.sqlite.SQLiteOpenHelper;
/**
*
*项目名称:com.ch20
*类名称:DBHelper
*类描述:数据库操作工具类
*创建人:方勇
*创建时间:2012-12-4上午8:50:40
*Copyright(c)方勇-版权所有
*/
publicclassDBHelper{
/*DDL,定义数据结构*/
privateDataBaseHelperdbHelper;
/*DML,数据库操作*/
privateSQLiteDatabasedb;
/*数据库名*/
privatefinalstaticStringDATABASE_NAME="a07.db3";
/*版本号*/
privatefinalstaticintDATABASE_VERSION=1;
/*上下文*/
privateContextmcontext;
publicDBHelper(Contextmcontext){
super();
this.mcontext=mcontext;
}
/*静态内部类,针对DDL*/
privatestaticclassDataBaseHelperextendsSQLiteOpenHelper{
publicDataBaseHelper(Contextcontext){
super(context,DATABASE_NAME,null,DATABASE_VERSION);
}
/*创建表结构*/
@Override
publicvoidonCreate(SQLiteDatabasedb){
db.execSQL("createtableifnotexistsstu(idintegerprimarykey,nametext)");
db.execSQL("insertintostuvalues(1,'a1')");
db.execSQL("insertintostuvalues(2,'a2')");
}
/*针对数据库升级*/
@Override
publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){
}
}
/*打开数据库,如果已经打开就使用,否则创建*/
publicDBHelperopen(){
dbHelper=newDataBaseHelper(mcontext);
db=dbHelper.getWritableDatabase();
returnthis;
}
/*关闭数据库*/
publicvoidclose(){
db.close();//先关DML
dbHelper.close();//DDL
}
/*插入*/
publiclonginsert(StringtableName,ContentValuesvalues){
return0;
}
/**
*
*更新
*
*@paramtableName表名
*@paramwhereClause条件
*@paramwhereArgs条件值
*@paramvalues更新值
*@return更新的条数
*
*/
publiclongupdate(StringtableName,StringwhereClause,String[]whereArgs,ContentValuesvalues){
returndb.update(tableName,values,whereClause,whereArgs);
}
/*删除*/
publicbooleandelete(StringtableName,StringwhereClause,String[]whereArgs){
returndb.delete(tableName,whereClause,whereArgs)>0;
}
/**
*
*查询,多条记录
*
*@paramtableName表名
*@paramcolumns列名
*@paramselection条件
*@paramselectionArgs条件值
*@paramgroupBy分组
*@paramhaving过滤
*@paramorderBy排序
*@paramlimit分页(2,3),从第二条记录开始,向下取三条记录
*@return动态游标
*
*/
publicCursorfindList(StringtableName,String[]columns,Stringselection,String[]selectionArgs,StringgroupBy,
Stringhaving,StringorderBy,Stringlimit){
returndb.query(tableName,columns,selection,selectionArgs,groupBy,having,orderBy,limit);
}
/**
*
*精确查询,返回一条数据
*
*@paramtableName表名
*@paramcolumns列名
*@paramselection条件
*@paramselectionArgs条件值
*@paramgroupBy分组
*@paramhaving过滤
*@paramorderBy排序
*@paramlimit分页(2,3),从第二条记录开始,向下取三条记录
*@return动态游标
*
*/
publicCursorfindInfo(StringtableName,String[]columns,Stringselection,String[]selectionArgs,StringgroupBy,
Stringhaving,StringorderBy,Stringlimit){
Cursorcursor=db.query(tableName,columns,selection,selectionArgs,groupBy,having,orderBy,limit);
while(cursor.moveToNext()){
cursor.moveToFirst();
}
returncursor;
}
/*执行sql方法*/
publicvoidexecuteSql(Stringsql){
db.execSQL(sql);
}
}
--------------------------------------------ActivityListViewActivity.java-------------------------
packagecom.ch20;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.List;
importandroid.app.Activity;
importandroid.database.Cursor;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.ListView;
importandroid.widget.SimpleAdapter;
/**
*
*项目名称:com.ch20
*类名称:ListViewActivity
*类描述:CRUD
*创建人:方勇
*创建时间:2012-12-4上午9:37:39
*Copyright(c)方勇-版权所有
*/
publicclassListViewActivityextendsActivityimplementsOnClickListener{
privateListViewlisView;
privateButtonaddBtn,deleteBtn,editBtn,queryBtn;
privateSimpleAdaptersimpleAdapter;
privateDBHelperdbHelper;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViews();
setListeners();
dbHelper=newDBHelper(this);
init();
}
@Override
publicvoidonClick(Viewv){
switch(v.getId()){
caseR.id.add_id:
break;
caseR.id.delete_id:
break;
caseR.id.edit_id:
break;
caseR.id.qyery_id:
break;
}
}
/*实例化UI*/
privatevoidfindViews(){
addBtn=(Button)findViewById(R.id.add_id);
deleteBtn=(Button)findViewById(R.id.delete_id);
editBtn=(Button)findViewById(R.id.edit_id);
queryBtn=(Button)findViewById(R.id.qyery_id);
lisView=(ListView)findViewById(R.id.show_result);
}
/*设置监听*/
privatevoidsetListeners(){
addBtn.setOnClickListener(this);
deleteBtn.setOnClickListener(this);
editBtn.setOnClickListener(this);
queryBtn.setOnClickListener(this);
}
/*初始化数据*/
privatevoidinit(){
simpleAdapter=newSimpleAdapter(this,getData(),R.layout.list_item,newString[]{"id","name"},newint[]{
R.id.view_id,R.id.view_name});
lisView.setAdapter(simpleAdapter);
}
/*获取数据库集合数据*/
privateList<HashMap<String,Object>>getData(){
dbHelper.open();
Cursorcursor=dbHelper.findList("stu",null,null,null,null,null,null,null);
Listlist=cursor2List(cursor);
dbHelper.close();
returnlist;
}
/*游标转换为集合*/
privateList<HashMap<String,Object>>cursor2List(Cursorcursor){
List<HashMap<String,Object>>list=newArrayList<HashMap<String,Object>>();
/*有记录*/
while(cursor.moveToNext()){
HashMap<String,Object>map=newHashMap<String,Object>();
intid=cursor.getInt(cursor.getColumnIndex("id"));
Stringname=cursor.getString(cursor.getColumnIndex("name"));
map.put("id",id);
map.put("name",name);
list.add(map);
}
returnlist;
}
}
--------------------------------------------效果----------------------------------------------------
<!--EndFragment-->
更多相关文章
- android 监听联系人数据库
- Android拍照上传至PHP服务器并写入MySql数据库(下)
- 【android】当数据库需要更新时我们该怎么办?
- Android之解析JSON数据示例(android原生态,FastJson,Gson)
- Android 顶部下拉刷新添加数据&& 底部上拉刷新添加数据 ScrollLi
- android中的sqlite数据库加密