인 스 턴 스 설명 Android 에서 SQLiteDatabase 사용 방법

7691 단어 AndroidSQLiteDatabase
SQLite 데이터 베 이 스 는 안 드 로 이 드 시스템 에 설 치 된 데이터베이스 로 작고 강력 하 며 대부분의 SQL 문장의 처리 작업 을 만족 시 킬 수 있 으 며 SQLite 데이터 베 이 스 는 파일 일 뿐 입 니 다.SQLite 는 좀 많 지만 PC 엔 드 의 my sql 처럼 강하 지 않 습 니 다.또한 안 드 로 이 드 시스템 에 서 는 JDBC 를 통 해 원 격 데이터 베 이 스 를 조작 할 수 없 기 때문에 웹 서비스 등 수단 으로 phop,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>

데 이 터 를 채 울 my textview.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();
    }
  }

}

실 현 된 효과:

특별히 지적 해 야 할 것 은 Simple Cursor Adapter 로 Cursor 를 봉인 할 때 바 텀 데이터베이스 시트 의 메 인 키 열 이름 을 이 라 고 요구 합 니 다.id,Simple CursorAdapter 는 메 인 키 열 이름 만 로 식별 할 수 있 기 때 문 입 니 다.id 의 시계.
이상 이 바로 본문의 전체 내용 입 니 다.여러분 께 참고 가 될 수 있 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기