实例讲解Android中SQLiteDatabase使用方法

实例讲解Android中SQLiteDatabase使用方法,第1张

概述SQLite数据库是android系统内嵌的数据库,小巧强大,能够满足大多数SQL语句的处理工作,而SQLite数据库仅仅是个文件而已。虽然SQLite的有点很多,但并不是如同PC端的mysql般强大,而且android系统中不允许通过JDBC ***

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使用方法所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1141706.html

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

发表评论

登录后才能评论

评论列表(0条)

保存