sqlite数据库是androID系统内嵌的数据库,小巧强大,能够满足大多数SQL语句的处理工作,而sqlite数据库仅仅是个文件而已。虽然sqlite的有点很多,但并不是如同PC端的MysqL般强大,而且androID系统中不允许通过JDBC *** 作远程数据库,所以只能通过webservice等手段于PHP、servlet交互获取数据。
sqliteDatabase类,代表了一个数据库对象,通过sqliteDatabase来 *** 作管理数据库。
一些基本的用法:
static sqliteDatabase openDatabase(String path,sqliteDatabase.CUrsorFactory factory,int flag);
static sqliteDatabase openorCreateDatabase(file file,sqliteDatabase.CursorFactory factory);
static sqliteDatabase openorCreateDatabase(String path,sqliteDatabse.CursorFactory factory);
通过这些静态方法可以很方便的打开和新建一个数据库。
1、execsql(String sql,Object[] bindArgs)
2、execsql(String sql)
3、rawquery(String sql,String[] selectionArgs);
4、beginTransaction()
5、endTransaction()
这些函数可以完成sql功能,对于查询出来的结果是用Cursor表示的,类似于JDBC中的ResultSet类,在这些类中通过方法move(int offset)、movetoFirst()、movetoLast()、movetoNext()、movetoposition(int position)、movetoPrivIoUs()获取需要的结果行。
下面通过一个实例来说明一下sqliteDatabase的基本使用:
main.xml:
<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:orIEntation="vertical" tools:context=".Main" > <linearLayout androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:orIEntation="horizontal" > <TextVIEw androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:gravity="center" androID:text="key" /> <EditText androID:ID="@+ID/keys" androID:layout_wIDth="100sp" androID:layout_height="wrap_content" /> <TextVIEw androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:gravity="center" androID:text="value" /> <EditText androID:ID="@+ID/values" androID:layout_wIDth="100sp" androID:layout_height="wrap_content" /> <button androID:ID="@+ID/btn" androID:layout_wIDth="100sp" androID:layout_height="wrap_content" androID:text="submit" /> </linearLayout> <linearLayout androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" > <ListVIEw androID:ID="@+ID/lv" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" /> </linearLayout></linearLayout>
用于填充数据的mytextvIEw.xml:
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:orIEntation="horizontal" > <TextVIEw androID:ID="@+ID/Listkey" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_gravity="left" /> <TextVIEw androID:ID="@+ID/Listvalue" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_marginleft="300sp" /></linearLayout>
Main.java
package com.app.main;import androID.annotation.Suppresslint;import androID.app.Activity;import androID.database.Cursor;import androID.database.sqlite.sqliteDatabase;import androID.os.Bundle;import androID.vIEw.VIEw;import androID.vIEw.VIEw.OnClickListener;import androID.Widget.button;import androID.Widget.CursorAdapter;import androID.Widget.EditText;import androID.Widget.ListVIEw;import androID.Widget.SimpleCursorAdapter;public class Main extends Activity { EditText ed1 = null; EditText ed2 = null; button btn = null; ListVIEw lv = null; sqliteDatabase db = null; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.main); ed1 = (EditText) this.findVIEwByID(R.ID.keys); ed2 = (EditText) this.findVIEwByID(R.ID.values); btn = (button) this.findVIEwByID(R.ID.btn); lv = (ListVIEw) this.findVIEwByID(R.ID.lv); db = sqliteDatabase.openorCreateDatabase(this.getfilesDir().toString() + "/my.db3",null); btn.setonClickListener(new OnClickListener() { @OverrIDe public voID onClick(VIEw vIEw) { String key = ed1.getText().toString(); String value = ed2.getText().toString(); try { insertData(db,key,value); Cursor cursor = db.rawquery("select * from tb_info",null); inflateListVIEw(cursor); } catch (Exception e) { String sql = "create table tb_info(_ID integer primary key autoincrement,db_key varchar(20),db_value varchar(50))"; db.execsql(sql); insertData(db,null); inflateListVIEw(cursor); } } }); } // 向数据库中插入数据 private voID insertData(sqliteDatabase db,String key,String value) { db.execsql("insert into tb_info values (null,?,?)",new String[] { key,value }); System.out.println("------------------"); } // 向ListVIEw中填充数据 @Suppresslint("NewAPI") public voID inflateListVIEw(Cursor cursor) { SimpleCursorAdapter adapter = new SimpleCursorAdapter(Main.this,R.layout.mytextvIEw,cursor,new String[] { "db_key","db_value" },new int[] { R.ID.Listkey,R.ID.Listvalue },CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER); lv.setAdapter(adapter); } @OverrIDe protected voID onDestroy() { super.onDestroy(); if (db != null && db.isopen()) { db.close(); } }}
实现的效果:
需要特别指出,在用SimpleCursorAdapter封装Cursor的时候,要求底层数据库表的主键列的列名为_ID,因为SimpleCursorAdapter只能识别主键列名为_ID的表。
以上就是本文的全部内容,希望能给大家一个参考,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的实例讲解Android中SQLiteDatabase使用方法全部内容,希望文章能够帮你解决实例讲解Android中SQLiteDatabase使用方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)