Android数据读取之Sqlite数据库操作
16lz
2021-01-25
咱们书接上文,继续来说说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
更多相关文章
- Android实现dialog的3D翻转
- Android入门之Style与Theme用法实例解析
- Android自学笔记:分析onXXX事件监听器中的两个参数position和id
- Android(安卓)开发中使用硬件加速
- android 访问远程数据库与发送email问题
- Android(安卓)任务栈与启动模式
- Android(安卓)两个Fragment之间的跳转和数据的传递实例详解
- 学个明白--Android控件架构
- Android(安卓)MVP模式进阶版——拿去直接用