概述在Android平台上,集成了一个嵌入式关系型
数据库—SQLite。以SQLite是一款轻型数据库:SQLite3支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n)、char(n)、decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型。
在AndroID平台上,集成了一个嵌入式关系型数据库—sqlite。以sqlite是一款轻型数据库:sqlite3支持 NulL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n)、char(n)、decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型。
sqlite可以解析大部分标准SQL语句。
一、设计界面
1、布局文件
打开res/layout/activity_main.xml文件。
输入以下代码:
[HTML] view plain copy
<?xmlversion="1.0"enCoding="utf-8"?> <
linearLayoutxmlns:androID="http://schemas.androID.com/apk/res/androID" androID:orIEntation="vertical" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:background="#EFEFEF"> TextVIEw
androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:text="@string/prompt" androID:textcolor="@drawable/black"/> EditText
androID:ID="@+ID/editbook" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:text="作者:" androID:ID="@+ID/editauthor" androID:text="出版社:" androID:ID="@+ID/editpublisher" ListVIEw
androID:ID="@+ID/ListvIEw" androID:background="@drawable/black" </linearLayout> 2、自定义列表文件
打开res/layout/List.xml文件。
输入以下代码:
copy androID:layout_wIDth="match_parent" androID:layout_height="match_parent"CheckedTextVIEwandroID:ID="@+ID/textbookname" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content"ImageVIEw androID:ID="@+ID/imageVIEw1" androID:layout_wIDth="wrap_content" androID:src="@drawable/List_driver"CheckedTextVIEwandroID:ID="@+ID/textauthor" androID:layout_height="wrap_content"/> ImageVIEw androID:ID="@+ID/imageVIEw2" androID:src="@drawable/List_driver"CheckedTextVIEwandroID:ID="@+ID/textpublisher" androID:layout_height="wrap_content" 3、颜色文件 打开res/values/color.xml文件。
输入以下代码:
copy resources> drawable
name="black">#000000drawabledrawablename="white">#FFFFFFFFdrawablename="gray">#EFEFEF 4、字符串文件 打开res/values/string.xml文件。
输入以下代码:
copy stringname="app_name">sqlitestringstringname="prompt">书名:(请使用菜单:完成新增、修改、查询、刪除记录)stringname="addrec">新增stringname="editrec">修改stringname="queryrec">查询stringname="delrec">刪除 二、程序文件 1、sqliteHelper.java文件
打开“src/com.genwoxue.sqlite/sqliteHelper.java”文件。
然后输入以下代码:
[java] copy packagecom.genwoxue.sqlite; importandroID.content.ContentValues; importandroID.content.Context; import
androID.database.Cursor; import
androID.database.sqlite.sqliteDatabase; import
androID.database.sqlite.sqliteOpenHelper; public
classsqliteHelperextendssqliteOpenHelper{ private
finalstaticStringDATABASE_name="library"; static
intDATABASE_VERSION=1; static
Stringtable_name="Book"; //构造函数,创建数据库 public
sqliteHelper(Contextcontext){ super
(context,DATABASE_name,null,DATABASE_VERSION); } //建表 voID
onCreate(sqliteDatabasedb){ Stringsql="CREATEtable"+table_name +"(_IDINTEGERPRIMARYKEY," +"BooknameVARCHAR(30)NOTNulL," +"AuthorVARCHAR(20),248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> +"PublisherVARCHAR(30))"; db.execsql(sql); voIDonUpgrade(sqliteDatabasedb,153); background-color:inherit; Font-weight:bold">intoldVersion,153); background-color:inherit; Font-weight:bold">intnewVersion){ Stringsql="DROPtableIFEXISTS"+table_name; onCreate(db); } //获取游标
public
Cursorselect(){ sqliteDatabasedb=this.getReadableDatabase(); Cursorcursor=db.query(table_name,null); return
cursor; //插入一条记录
long
insert(Stringbookname,Stringauthor,Stringpublisher){ sqliteDatabasedb=this.getWritableDatabase(); ContentValuescv=newContentValues(); cv.put("Bookname",bookname); cv.put("Author",author); cv.put("Publisher",publisher); long
row=db.insert(table_name,cv); return
row; //根据条件查询
public
Cursorquery(String[]args){ Cursorcursor=db.rawquery("SELECT*FROM"+table_name+"WHEREBooknameliKE?",args); //删除记录
voID
delete(intID){ Stringwhere="_ID=?"; String[]whereValue={Integer.toString(ID)}; db.delete(table_name,where,whereValue); //更新记录
voID
update(intID,Stringbookname,108); List-style:decimal-leading-zero outsIDe; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> db.update(table_name,cv,108); List-style:decimal-leading-zero outsIDe; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> } 2、MainActivity.java文件
打开“src/com.genwoxue.sqlite/MainActivity.java”文件。
然后输入以下代码:
copy importandroID.app.Activity; import
androID.database.Cursor; import
androID.os.Bundle; import
androID.vIEw.Menu; import
androID.vIEw.MenuItem; import
androID.vIEw.VIEw; import
androID.Widget.AdapterVIEw; import
androID.Widget.EditText; import
androID.Widget.ListVIEw; import
androID.Widget.SimpleCursorAdapter; class
MainActivityextendsActivity{ private
sqliteHelperhelper; private
Cursorcursor; private
ListVIEwlvBook; private
EditTexteditBook; private
EditTexteditAuthor; private
EditTexteditPublisher; int
ID=0; protected
intMENU_ADD=Menu.FirsT; int
MENU_EDIT=Menu.FirsT+1; int
MENU_query=Menu.FirsT+2; int
MENU_DELETE=Menu.FirsT+3; //执行菜单选项
boolean
onoptionsItemSelected(MenuItemitem) { super
.onoptionsItemSelected(item); switch
(item.getItemID()) { case
MENU_ADD: this
.addRec(); break
; case
MENU_EDIT: this
.editRec(); break
; case
MENU_query: this
.queryRec(); case
MENU_DELETE: this
.deleteRec(); return
true; //初始化菜单
boolean
onCreateOptionsMenu(Menumenu) super
.onCreateOptionsMenu(menu); menu.add(Menu.NONE,MENU_ADD,0,R.string.addrec).setIcon(androID.R.drawable.ic_menu_add); menu.add(Menu.NONE,MENU_EDIT,R.string.editrec).setIcon(androID.R.drawable.ic_menu_edit); true
; voID
onCreate(BundlesavedInstanceState) super
.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); lvBook=(ListVIEw)this.findVIEwByID(R.ID.ListvIEw); editBook=(EditText)this.findVIEwByID(R.ID.editbook); editAuthor=(EditText)this.findVIEwByID(R.ID.editauthor); editPublisher=(EditText)this.findVIEwByID(R.ID.editpublisher); //表中内容填充到自定义ListVIEw
helper=newsqliteHelper(this); cursor=helper.select(); SimpleCursorAdapteradapter=newSimpleCursorAdapter( this
, R.layout.List, cursor, new
String[]{"Bookname","Author","Publisher"}, new
int[]{R.ID.textbookname,R.ID.textauthor,R.ID.textpublisher} ); lvBook.setAdapter(adapter); //lvBook设置OnItemClickListener监听事件
lvBook.setonItemClickListener(newAdapterVIEw.OnItemClickListener(){ voID
onItemClick(AdapterVIEw<?>arg0,VIEwarg1,153); background-color:inherit; Font-weight:bold">intarg2,153); background-color:inherit; Font-weight:bold">longarg3){ cursor.movetoposition(arg2);//将cursor移到所点击的值 ID=cursor.getInt(0);//取得字段_ID的值 editBook.setText(cursor.getString(1));//取得字段Rec_text的值 editAuthor.setText(cursor.getString(2)); editPublisher.setText(cursor.getString(3)); }); //添加记录
voID
addRec() if
(editBook.getText().toString().equals("")) return
; helper.insert(editBook.getText().toString(),editAuthor.getText().toString(),editPublisher.getText().toString()); //重新加载数据
cursor.requery(); lvBook.invalIDateVIEws(); editBook.setText(""); editAuthor.setText(""); editPublisher.setText(""); //修改记录
voID
editRec() helper.update(ID,editBook.getText().toString(),0); background-color:inherit">//重新加载数据 cursor.requery(); lvBook.invalIDateVIEws(); editBook.setText(""); editAuthor.setText(""); editPublisher.setText(""); //根据书名查询
voID
queryRec() Stringet=editBook.getText().toString(); Stringargs[]=newString[]{"%"+et+"%"}; cursor=helper.query(args); SimpleCursorAdapteradapter=newSimpleCursorAdapter( R.layout.List,108); List-style:decimal-leading-zero outsIDe; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> cursor,R.ID.textpublisher} ); lvBook.setAdapter(adapter); voID
deleteRec() helper.delete(ID); 三、配置文件
打开“AndroIDManifest.xml”文件。
然后输入以下代码:
copy manifest
xmlns:androID="http://schemas.androID.com/apk/res/androID" package="com.genwoxue.sqlite" androID:versionCode="1" androID:versionname="1.0"uses-sdk androID:minSdkVersion="8" androID:targetSdkVersion="15"application androID:allowBackup="true" androID:icon="@drawable/ic_launcher" androID:label="@string/app_name" androID:theme="@style/Apptheme"activity androID:name="com.genwoxue.sqlite.MainActivity" span
style="color:#ff0000;">strong>androID:theme="@androID:style/theme">spanintent-filteractionandroID:name="androID.intent.action.MAIN"categoryandroID:name="androID.intent.category.LAUNCHER"activityapplicationmanifest 注意:在AndroID4.0中,如果想显示2.3版本中样式的菜单,需要在配置文件中填加以上红色代码。 四、运行结果
说明:输入内容,单击“新增”菜单,则添加一条记录;也可以根据书名查询相应书籍;也可以选中某条记录,然后单击“修改”或“删除”菜单。
附:
(一)如何删除sqlite数据库
常有人问:如何删除自己创建的数据库?
在Activity中,提供有现成的方法:public boolean deleteDatabase (String name)
(二)SimpleCursorAdapter简要说明
描述:
SimpleCurosrAdapter 是一个将 Cursor 中的 columns 与在 XML 文件中定义的 TextVIEws 或 ImageVIEws 进行匹配的简易 adapter。你可以指定选择 Cursor 中的哪些 columns、用哪些 vIEws 来显示这些 columns 、以及指定定义这些 vIEws 的 xml 文件。
也就是说,SimpleCursorAdapter 允许绑定一个 Cursor 的 columns 到 ListVIEw 上,并使用自定义的 layout 显示 List中的每个项目。
可以使用 SimpleCursorAdapter 作为中间桥梁,将从 sqlite 数据库中查询出来的数据直接显示到 ListVIEw 中。
原型:
public SimpleCursorAdapter(Context context,int layout,Cursor c,String[] from,int[] to) {
super(context,layout,c);
mTo = to;
mOriginalFrom = from;
findColumns(from);
}
参数:
Context context,这个与 SimpleListItemFactory 相关的 ListVIEw 所处运行上下文(context)。也就是这个 ListVIEw 所在的 Activity。
int layout,显示 List item 的 布局文件。这个 layout 文件中至少要包含在 "to" 参数中命名的 vIEws。
Cursor c,
数据库的光标( Cursor )。如果 cursor 无效,则该参数可以为 null String[] from,指定 column 中的哪些列的数据将绑定(显示)到 UI 中。如果 cursor 无效, 则该参数可为 null。
int[] to,指定用于显示 "from" 参数指定的数据列表的 vIEws。 这些 vIEws 必须都是 TextVIEws。 "from" 参数的前 N 个值(valus)和 "to" 参数的前 N 个 vIEws 是一一对应的关系。如果 cursor 无效,则该参数可为 null。
总结
以上是内存溢出为你收集整理的使用SQLite本地数据库全部内容,希望文章能够帮你解决使用SQLite本地数据库所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
评论列表(0条)