Android中Sqlite数据库的使用

依照习惯还是通过一个例子来熟悉,我只所以都把例子写在这里方便我以后查找使用,也可以共享给大家学习,如果大家有什么好的网址和Demo也可以告诉我,谢谢!共同进步!!! :D
DatabaseActivity.java启动类:

package com.example.Database;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class DatabaseActivity extends Activity implements
Button.OnClickListener {

DBAdapter db_ex;

long id;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// 通过此类来进行数据库的相关操作
db_ex = new DBAdapter(this, Constants.DB_NAME, Constants.DB_VERSION);

Button add_btn = (Button) findViewById(R.id.Button01);
Button cancel_btn = (Button) findViewById(R.id.Button02);
Button update_btn = (Button) findViewById(R.id.Button03);
Button check_btn = (Button) findViewById(R.id.Button04);

add_btn.setOnClickListener(this);
cancel_btn.setOnClickListener(this);
update_btn.setOnClickListener(this);
check_btn.setOnClickListener(this);

}

public void onClick(View v) {
switch (v.getId()) {
case R.id.Button01:
// ---add 2 titles---
// 每次操作数据库都要调用此函数open()
db_ex.open();
id = db_ex.insertTitle("1111111", "Android book", "Jim");
id = db_ex.insertTitle("2222222", "Iphone book", "Edison");

// ---获取所有标题---
Cursor c = db_ex.getAllTitles();

if (c.moveToFirst()) {
do {
DisplayTitle(c);
} while (c.moveToNext());
}
db_ex.close();
break;
case R.id.Button02:
// 删除一行数据
db_ex.open();
if (db_ex.deleteTitle(1)) {
Toast.makeText(this, "Delete successful.", Toast.LENGTH_LONG)
.show();
} else {
Toast.makeText(this, "Delete failed.", Toast.LENGTH_LONG)
.show();
}

db_ex.close();
break;
case R.id.Button03:
// 更新一条数据
db_ex.open();
if (db_ex.updateTitle(1, "1234567", "Programmer's Reference",
"Wrox Press")) {
Toast.makeText(this, "Update successful.", Toast.LENGTH_LONG)
.show();
}

else {
Toast.makeText(this, "Update failed.", Toast.LENGTH_LONG)
.show();
}

// 将更新后的数据显示出来
Cursor c1 = db_ex.getTitle(1);
if (c1.moveToFirst()) {
DisplayTitle(c1);
} else {
Toast.makeText(this, "No title found", Toast.LENGTH_LONG)
.show();
}

db_ex.close();
break;
case R.id.Button04:

// 检索一条特定的数据

db_ex.open();
Cursor c2 = db_ex.getTitle(2);
if (c2.moveToFirst()) {
DisplayTitle(c2);
} else {
Toast.makeText(this, "No title found", Toast.LENGTH_LONG)
.show();
}
db_ex.close();

break;
default:
break;

}
}

// 显示数据库中的所有数据
public void DisplayTitle(Cursor c) {
Toast.makeText(
this,
"id: " + c.getString(0) + "\n" + "ISBN: " + c.getString(1)
+ "\n" + "TITLE: " + c.getString(2) + "\n"
+ "PUBLISHER: " + c.getString(3), Toast.LENGTH_LONG)
.show();
}

}

2. DatabaseHelper.java这个类管理数据库的创建和版本管理

package com.example.Database;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.util.Log;

//A helper class to manage database creation and version management
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String TAG = "DBAdapter";

public DatabaseHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
}

@Override
// 只有在第一次创建数据库的时候调用
// Called when the database is created for the first time
public void onCreate(SQLiteDatabase db) {
// Execute a single SQL statement that is not a query
db.execSQL(Constants.DATABASE_CREATE);
Log.i("", "execSQL");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS titles");
onCreate(db);
}
}


3. DBAdapter.java是对数据库的增,删,改,查的操作都在这个类里面

package com.example.Database;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

public class DBAdapter {
DatabaseHelper DBHelper;
SQLiteDatabase db;

public DBAdapter(Context ctx, String base_name, int version) {
DBHelper = new DatabaseHelper(ctx, base_name, null, version);
}

// 创建或打开一个读写数据库,每次写数据库都要调用此方法
// 不在使用时,需调用close()
public DBAdapter open() throws SQLException {
// ---打开数据库---    
db = DBHelper.getWritableDatabase();
Log.i("", "getWritableDatabase");
return this;
}

public void close() {
// ---关闭数据库---
DBHelper.close();
}

// ---向数据库中插入一个标题---   
public long insertTitle(String isbn, String title, String publisher) {
ContentValues initialValues = new ContentValues();
initialValues.put(Constants.KEY_ISBN, isbn);
initialValues.put(Constants.KEY_TITLE, title);
initialValues.put(Constants.KEY_PUBLISHER, publisher);
return db.insert(Constants.TABLE_NAME, Constants.KEY_ROWID,
initialValues);
}

// ---删除一个指定标题---   
public boolean deleteTitle(long rowId) {
return db.delete(Constants.TABLE_NAME, Constants.KEY_ROWID + "="
+ rowId, null) > 0;
}

// ---检索所有标题---
public Cursor getAllTitles() {
return db.query(Constants.TABLE_NAME, new String[] {
Constants.KEY_ROWID, Constants.KEY_ISBN, Constants.KEY_TITLE,
Constants.KEY_PUBLISHER }, null, null, null, null, null);
}

// ---检索一个指定标题---  
public Cursor getTitle(long rowId) throws SQLException {
Cursor mCursor = db.query(true, Constants.TABLE_NAME, new String[] {
Constants.KEY_ROWID, Constants.KEY_ISBN, Constants.KEY_TITLE,
Constants.KEY_PUBLISHER }, Constants.KEY_ROWID + "=" + rowId,
null, null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}

// ---更新一个标题---   
public boolean updateTitle(long rowId, String isbn, String title,
String publisher) {
ContentValues args = new ContentValues();
args.put(Constants.KEY_ISBN, isbn);
args.put(Constants.KEY_TITLE, title);

args.put(Constants.KEY_PUBLISHER, publisher);
return db.update(Constants.TABLE_NAME, args, Constants.KEY_ROWID + "="
+ rowId, null) > 0;
}

}



4.Constants.java文件主要是一些常量的保存:

package com.example.Database;

public class Constants {
public final static String DB_NAME = "dne_db";
public final static int DB_VERSION = 1;

public static final String TABLE_NAME = "titles";
public static final String KEY_ROWID = "_id";
public static final String KEY_ISBN = "isbn";
public static final String KEY_TITLE = "title";
public static final String KEY_PUBLISHER = "publisher";

public static final String DATABASE_CREATE = "create table IF NOT EXISTS "
+ TABLE_NAME + " (_id integer primary key autoincrement, "
+ "isbn text, title text not null, " + "publisher text not null);";
}


5.最后是main.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/hello" />


<Button android:text="add one row" android:id="@+id/Button01"
android:layout_width="150dp"
android:layout_height="wrap_content"></Button>

<Button android:text="delete one row" android:id="@+id/Button02"
android:layout_width="150dp"
android:layout_height="wrap_content"></Button>

<Button android:text="update one row" android:id="@+id/Button03"
android:layout_width="150dp"
android:layout_height="wrap_content"></Button>

<Button android:text="select one row" android:id="@+id/Button04"
android:layout_width="150dp"
android:layout_height="wrap_content"></Button>

</LinearLayout>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值