使用SQLite本地数据库

使用SQLite本地数据库,第1张

概述在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
>
drawablename="black">#000000drawabledrawablename="white">#FFFFFFFFdrawablename="gray">#EFEFEF   4、字符串文件

  打开res/values/string.xml文件。
  输入以下代码:

copy string
name="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; import
androID.content.ContentValues; importandroID.content.Context; importandroID.database.Cursor; importandroID.database.sqlite.sqliteDatabase; importandroID.database.sqlite.sqliteOpenHelper; publicclasssqliteHelperextendssqliteOpenHelper{ privatefinalstaticStringDATABASE_name="library"; staticintDATABASE_VERSION=1; staticStringtable_name="Book"; //构造函数,创建数据库 publicsqliteHelper(Contextcontext){ super(context,DATABASE_name,null,DATABASE_VERSION); } //建表 voIDonCreate(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); } //获取游标 publicCursorselect(){ sqliteDatabasedb=this.getReadableDatabase(); Cursorcursor=db.query(table_name,null); returncursor; //插入一条记录 longinsert(Stringbookname,Stringauthor,Stringpublisher){ sqliteDatabasedb=this.getWritableDatabase(); ContentValuescv=newContentValues(); cv.put("Bookname",bookname); cv.put("Author",author); cv.put("Publisher",publisher); longrow=db.insert(table_name,cv); returnrow; //根据条件查询 publicCursorquery(String[]args){ Cursorcursor=db.rawquery("SELECT*FROM"+table_name+"WHEREBooknameliKE?",args); //删除记录 voIDdelete(intID){ Stringwhere="_ID=?"; String[]whereValue={Integer.toString(ID)}; db.delete(table_name,where,whereValue); //更新记录 voIDupdate(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 import
androID.app.Activity;
importandroID.database.Cursor; importandroID.os.Bundle; importandroID.vIEw.Menu; importandroID.vIEw.MenuItem; importandroID.vIEw.VIEw; importandroID.Widget.AdapterVIEw; importandroID.Widget.EditText; importandroID.Widget.ListVIEw; importandroID.Widget.SimpleCursorAdapter; classMainActivityextendsActivity{ privatesqliteHelperhelper; privateCursorcursor; privateListVIEwlvBook; privateEditTexteditBook; privateEditTexteditAuthor; privateEditTexteditPublisher; intID=0; protectedintMENU_ADD=Menu.FirsT; intMENU_EDIT=Menu.FirsT+1; intMENU_query=Menu.FirsT+2; intMENU_DELETE=Menu.FirsT+3; //执行菜单选项 booleanonoptionsItemSelected(MenuItemitem) { super.onoptionsItemSelected(item); switch(item.getItemID()) { caseMENU_ADD: this.addRec(); break; caseMENU_EDIT: this.editRec(); break; caseMENU_query: this.queryRec(); caseMENU_DELETE: this.deleteRec(); returntrue; //初始化菜单 booleanonCreateOptionsMenu(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; voIDonCreate(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, newString[]{"Bookname","Author","Publisher"}, newint[]{R.ID.textbookname,R.ID.textauthor,R.ID.textpublisher} ); lvBook.setAdapter(adapter); //lvBook设置OnItemClickListener监听事件 lvBook.setonItemClickListener(newAdapterVIEw.OnItemClickListener(){ voIDonItemClick(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)); }); //添加记录 voIDaddRec() 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(""); //修改记录 voIDeditRec() helper.update(ID,editBook.getText().toString(),0); background-color:inherit">//重新加载数据 cursor.requery(); lvBook.invalIDateVIEws(); editBook.setText(""); editAuthor.setText(""); editPublisher.setText(""); //根据书名查询 voIDqueryRec() 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); voIDdeleteRec() helper.delete(ID); 三、配置文件

  打开“AndroIDManifest.xml”文件。
  然后输入以下代码:

copy manifestxmlns: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" spanstyle="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本地数据库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1170285.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存