Android数据读取之Sqlite数据库操作
咱们书接上文,继续来说说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(); //查询获得Cursor Cursor 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(); } } @Override public 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; @Override protected 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(){ @Override public void onClick(View v) { // TODO Auto-generated method stub String 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); //实例化intent Intent intent=new Intent(MainActivity.this,QueryActivity.class); //启动Activity startActivity(intent); } }); } @Override public 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 { @Override protected 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"}; //列表项ID int[] 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(){ @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub final long temp=arg3; builder.setMessage("真的要删除记录吗?") .setPositiveButton("是", new DialogInterface.OnClickListener() { @Override public 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"}; //列表项ID int[] 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() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }); AlertDialog ad=builder.create(); ad.show(); } }); helper.close(); } @Override public 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数据读取之Sqlite数据库操作的更多相关文章
- Android数据存储之SQLite数据库
Android数据存储 之SQLite数据库简介 SQLite的相关知识,并结合Java实现对SQLite数据库的操作. SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎. ...
- 【Android】实验8 SQLite数据库操作2016.5.12
实验8 SQLite数据库操作 [目的] 设计一个个人通讯录,掌握Android平台下的数据库开发,该个人通讯录主要包括联系人列表和联系人详细信息等界面. [要求] 程序主界面是通讯录的目录显示手机 ...
- Android 数据存储之 SQLite数据库存储
----------------------------------------SQLite数据库---------------------------------------------- SQLi ...
- 【Android 应用开发】Android 数据存储 之 SQLite数据库详解
. 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19028665 . SQLiteDataBase示例程序下 ...
- Android数据存储之SQLite 数据库学习
Android提供了五种存取数据的方式 (1)SharedPreference,存放较少的五种类型的数据,只能在同一个包内使用,生成XML的格式存放在设备中 (2) SQLite数据库,存放各种数据, ...
- Android 数据存储 之 SQLite数据库详解
. 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19028665 . SQLiteDataBase示例程序下 ...
- Android数据存储引擎---SQLite数据库
目标:是否可以在PC端桌面上使用SQLite数据库制作一个财务文件? 目录: 来源: 实践: 总结和比较: SQLite数据简介 是什么,内部结构是怎样的,数据库和表的关系是什么 有什么用 常用的操作 ...
- Android数据存储之SQLite的操作
Android作为一个应用在移动设备上的操作系统,自然也就少不了数据的存储.然而SQLite作为一个轻型的关系型数据库,基于其轻量.跨平台.多语言接口及安全性等诸多因数考虑,因而Android较大的数 ...
- 我的Android六章:Android中SQLite数据库操作
今天学习的内容是Android中的SQLite数据库操作,在讲解这个内容之前小编在前面有一篇博客也是讲解了SQLite数据库的操作,而那篇博客的讲解是讲述了 如何在Window中通过DOM来操作数据库 ...
随机推荐
- Linux指令od和hexdump
Linux指令:od (octal dump) 示例用法:od -c hello Linux指令:od od命令用户通常使用od命令查看特殊格式的文件内容.通过指定该命令的不同选项可以以十进制.八进制 ...
- Python中 and,or 的计算规则
一.纯 and 和 or 语句 1. 在纯and语句中,如果每一个表达式都不是假的话,那么返回最后一个,因为需要一直匹配直到最后一个.如果有一个是假,那么返回假2. 在纯or语句中,只要有一个表达式不 ...
- CRM项目问答总结
1. 通过ChangeList封装好多数据 DA: 在stark组件中,有五个封装的大类: class FilterOption(object): ----用于封装组合搜索的配置信息(数据库字段,是否 ...
- mysql如果主库宕机,如何解决?
两种情况服务器down机,数据库down机 如果此时需要切从库 1.先show processlist\G,查看状态 如果看到两个状态,说明此时的从库和主库是同步的 state: waiting fo ...
- Python 优雅的操作字典
Python 中的字典是Python中一个键值映射的数据结构,下面介绍一下如何优雅的操作字典. 来源:https://www.linuxzen.com/python-you-ya-de-cao-zuo ...
- linux java环境配置
一.安装 创建安装目录,在/usr/java下建立安装路径,并将文件考到该路径下: # mkdir /usr/java 1.jdk-6u11-linux-i586.bin 这个是自解压的文件,在lin ...
- linux命令(6/9):watch命令
watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行.在Linux下,watch是周期性的执行下个 ...
- Web开发相关笔记 #01#
前端学习纲要 ※jQuery 参考 ※ 整理 Chrome 收藏夹的小技巧 ※ 解决 AJAX 跨域获取 cookie ※ 记一次 MyBatis 相关的 debug [1] 前端学习纲要: ♦ 第一 ...
- GIT使用—安装配置及工作流程
一.Git 与 SVN 区别 GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等. 1.GIT是分布式的,SVN不是:这是GIT和其它非分布式的版本控制系统,例如SVN,CV ...
- redhat 6.8 配置yum源
一般安装好redhat后,不能注册的话,不能使用系统自带的yum源.但是我们可以自己配置yum源来解决这一问题.下面介绍下redhat配置163yum源. 1. 检查是否安装yum包 rpm -qa ...