咱们书接上文,继续来说说Android数据读取,这回,我们要讲的是Sqlite数据库的相关操作。以一个实例开始吧:

首先,上图,看看做成后的效果:

大概描述:类似于浏览器的收藏夹,网站名称,网站地址,网站描述,添加完成之后显示已添加的所有的内容,在ListView单击弹出是否删除对话框,删除成功后刷新视图并重新查询内容。

安卓提供了创建和使用SQLite数据库的API。SQLiteDataBase代表一个数据库对象,提供了操作数据库的一些方法,另外还有一个SQLiteOpenHelper工具类更简洁的功能。


实例的文件组织如下:


main.xml是添加界面,query.xml是查询界面,DBHelper是数据库操作类,MainActivity和QueryActivity分别对应main和query的Activity,其中,QueryActivity继承ListActivity。源代码如下:

DBHelper.java

package com.lzugis.database;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class DBHelper extends SQLiteOpenHelper{//数据库名称private static final String DB_NAME="coll.db";//表名称private static final String TBL_NAME="CollTbl";//创建表SQL语句private static final String CREATE_TBL=" create table "+" CollTbl(_id integer primary key autoincrement,name text,url text,desc text)";//SQLiteDatabase实例private SQLiteDatabase db;/* * 构造方法 */DBHelper(Context c){super(c,DB_NAME,null,2);};/* * 创建表 * @see android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite.SQLiteDatabase) */public void onCreate(SQLiteDatabase db){this.db=db;db.execSQL(CREATE_TBL);}/* * 插入方法 */public void insert(ContentValues values){//获得SQLiteDatabase实例SQLiteDatabase db=getWritableDatabase();//插入db.insert(TBL_NAME, null, values);//关闭db.close();}/* * 查询方法 */public Cursor query(){//获得SQLiteDatabase实例SQLiteDatabase db=getWritableDatabase();//查询获得CursorCursor c=db.query(TBL_NAME, null, null, null, null, null, null);return c;}/* * 删除方法 */public void del(int id){if(db==null){//获得SQLiteDatabase实例db=getWritableDatabase();}//执行删除db.delete(TBL_NAME, "_id=?", new String[]{String.valueOf(id)});}/* * 关闭数据库 */public void colse(){if(db!=null){db.close();}}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stub}}
main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <TextView        android:id="@+id/textView1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="网站名称" />    <EditText        android:id="@+id/EditTextName"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:ems="10" >        <requestFocus />    </EditText>    <TextView        android:id="@+id/textView2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="网站地址" />    <EditText        android:id="@+id/EditTextUrl"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:ems="10" />    <TextView        android:id="@+id/textView3"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="网站描述" />    <EditText        android:id="@+id/EditTextDesc"        android:layout_width="match_parent"        android:layout_height="100dp"        android:ems="10" />    <Button        android:id="@+id/ButtonAdd"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="添加" /></LinearLayout>
MainActivity.java

package com.lzugis.database;import android.os.Bundle;import android.app.Activity;import android.content.ContentValues;import android.content.Intent;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class MainActivity extends Activity {private EditText etName,etUrl,etDesc;private Button btnAdd;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);etName=(EditText)findViewById(R.id.EditTextName);etUrl=(EditText)findViewById(R.id.EditTextUrl);etDesc=(EditText)findViewById(R.id.EditTextDesc);btnAdd=(Button)findViewById(R.id.ButtonAdd);btnAdd.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString name=etName.getText().toString();String url=etUrl.getText().toString();String desc=etDesc.getText().toString();//内容值实例ContentValues values=new ContentValues();//在value中添加信息values.put("name",name);values.put("url", url);values.put("desc", desc);//实例化数据帮助类DBHelper helper=new DBHelper(getApplicationContext());//插入数据helper.insert(values);//实例化intentIntent intent=new Intent(MainActivity.this,QueryActivity.class);//启动ActivitystartActivity(intent);}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

query.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <TextView        android:id="@+id/text0"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:paddingRight="10pt" />    <TextView        android:id="@+id/text1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:paddingRight="10pt" />    <TextView        android:id="@+id/text2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:paddingRight="10pt" />    <TextView        android:id="@+id/text3"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:paddingRight="10pt" /></LinearLayout>

QueryActivity.java

package com.lzugis.database;import android.os.Bundle;import android.app.AlertDialog;import android.app.ListActivity;import android.content.DialogInterface;import android.database.Cursor;import android.support.v4.widget.SimpleCursorAdapter;import android.view.Menu;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;public class QueryActivity extends ListActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//设置标题this.setTitle("浏览收藏信息");//实例化数据库帮助类final DBHelper helper=new DBHelper(this);//查询获得游标Cursor c=helper.query();//列表项数组String[] from={"_id","name","url","desc"};//列表项IDint[] to={R.id.text0,R.id.text1,R.id.text2,R.id.text3};//适配器SimpleCursorAdapter apt=new SimpleCursorAdapter(this,R.layout.query,c,from,to);//列表视图ListView listview =getListView();//为列表视图添加适配器listview.setAdapter(apt);//提示对话框final AlertDialog.Builder builder=new AlertDialog.Builder(this);//为listView添加监听器listview.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO Auto-generated method stubfinal long temp=arg3;builder.setMessage("真的要删除记录吗?")   .setPositiveButton("是", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub//删除数据helper.del((int)temp);//重新查询Cursor c=helper.query();//列表项数组String[] from={"_id","name","url","desc"};//列表项IDint[] to={R.id.text0,R.id.text1,R.id.text2,R.id.text3};//适配器SimpleCursorAdapter apt=new SimpleCursorAdapter(getApplicationContext(),R.layout.query,c,from,to);//列表视图ListView listview =getListView();//为列表视图添加适配器listview.setAdapter(apt);}}).setNegativeButton("否", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}});AlertDialog ad=builder.create();ad.show();}});helper.close();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.query, menu);return true;}}


附件:

有需要源码的请移步:http://download.csdn.net/detail/gisshixisheng/6733227

更多相关文章

  1. Android实现dialog的3D翻转
  2. Android入门之Style与Theme用法实例解析
  3. Android自学笔记:分析onXXX事件监听器中的两个参数position和id
  4. Android(安卓)开发中使用硬件加速
  5. android 访问远程数据库与发送email问题
  6. Android(安卓)任务栈与启动模式
  7. Android(安卓)两个Fragment之间的跳转和数据的传递实例详解
  8. 学个明白--Android控件架构
  9. Android(安卓)MVP模式进阶版——拿去直接用

随机推荐

  1. android 抛出“Unparsed aapt error(s)”
  2. Android中使用硬件加速的技巧
  3. Android(安卓)Lottie动画的简单使用
  4. Android(安卓)Selector 背景选择器
  5. Android处理异步耗时任务,AsyncTask使用教
  6. Gradle 构建 android 应用常见问题解决指
  7. Android(安卓)4.0 SDK 环境搭建体验(Windo
  8. android 联系人源码分析 新字段的添加流
  9. Android(安卓)TextView属性详解
  10. error: Error parsing XML: unbound pref