實例講解Android中SQLiteDatabase使用方法

PC教程網】關于實例講解Android中SQLiteDatabase使用方法_python實例講解介紹:SQLite數據庫 是android系統內嵌的數據庫,小巧強大,能夠滿足大多數SQL語句的處理工作,而SQLite數據庫僅僅是個文件而已。雖然SQLite的有點很多,但并不是如同PC端的mysql般強大,而且,下面小編為您針對實例講解Android中SQLiteDatabase使用方法進行分享:

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, key, value);

          Cursor cursor = db.rawQuery("select * from tb_info", 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的表。

以上就是本文的全部內容,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關教程

舉例講解JavaScript substring()的使用方法

舉例講解JavaScript substring()的使用方法

定義和用法 substring() 方法用于提取字符串中介于兩個指定下標之間的字符。 語法 stringObject.substring(start,stop) 返回值 一個新的字符串,該字符串值包含 stringObject 的一個子字符串,其內 …

實例講解Android中的AIDL內部進程通信接口使用

實例講解Android中的AIDL內部進程通信接口使用

首先描述下我們想要實現的內容,我們希望在一個應用中通過點擊按鈕,去操作另一個進程中應用的音樂播放功能。 如圖,我們點擊“播放”時,系統就會去遠程調用我們提供的一個 …

實例講解Android中的AutoCompleteTextView自動補全組件

實例講解Android中的AutoCompleteTextView自動補全組件

AutoCompleteTextView是一個具有自動補全功能的EditView,當用戶輸入數據后,AutoCompleteTextView就會將用戶輸入的數據與他自己的adapter中的數據對比,如果用戶數據與adapter中的某條數據的開始 …

實例詳解Java中如何對方法進行調用

方法調用 Java支持兩種調用方法的方式,根據方法是否返回值來選擇。 當程序調用一個方法時,程序的控制權交給了被調用的方法。當被調用方法的返回語句執行或者到達方法體閉括號 …

Android中HorizontalScrollView使用方法詳解

Android中HorizontalScrollView使用方法詳解

由于移動設備物理顯示空間一般有限,不可能一次性的把所有要顯示的內容都顯示在屏幕上。所以各大平臺一般會提供一些可滾動的視圖來向用戶展示數據。Android平臺框架中為我們提供 …

詳解Android Checkbox的使用方法

詳解Android Checkbox的使用方法

0和1是計算機的基礎,數理邏輯中0和1代表兩種狀態,真與假.0和1看似簡單,其實變化無窮. 今天我就來聊聊android控件中擁有著0和1這種特性的魔力控件checkbox. 先來講講Checkbox的基本使用.在 …

實例講解.NET中資源文件的創建與使用

一、資源文件 資源文件顧名思義就是存放資源的文件。資源文件在程序設計中有著自身獨特的優勢,他獨立于源程序,這樣資源文件就可以被多個程序使用。同時在程序設計的時候,有 …

實例講解Python中函數的調用與定義

調用函數: #!/usr/bin/env python3 # -*- coding: utf-8 -*- # 函數調用 abs(100) 100 abs(-110) 110 abs(12.34) 12.34 abs(1, 2) Traceback (most recent call last): File "stdin", line 1, in module TypeError: abs() takes exactly one argume …

實例講解Swift中引用類型的ARC自動引用計數

實例講解Swift中引用類型的ARC自動引用計數

一、引言 ARC(自動引用計數)是Objective-C和Swift中用于解決內存管理問題的方案。在學習Objective-C編程時經常會學習到一個關于ARC的例子:在一個公用的圖書館中,每次進入一人就將卡插 …

内蒙古十一选五任五推荐号