Android之SQLite数据库的使用

来源:互联网 发布:积分规则数据库设计 编辑:程序博客网 时间:2024/05/16 14:36

SQLite是比较小而功能比较全的关系型数据库,下面介绍一下SQLite数据库的使用方法,及增删改查操作。

创建一个Android项目;

首先我们需要创建一个DatabaseHelper这个助手类,源码:

package cn.android.sword.sqlite.db;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;public class DatabaseHelper extends SQLiteOpenHelper{private static final int VERSION = 1;private static final String SWORD="SWORD";//三个不同参数的构造函数//带全部参数的构造函数,此构造函数必不可少public DatabaseHelper(Context context, String name, CursorFactory factory,int version) {super(context, name, factory, version);}//带两个参数的构造函数,调用的其实是带三个参数的构造函数public DatabaseHelper(Context context,String name){this(context,name,VERSION);}//带三个参数的构造函数,调用的是带所有参数的构造函数public DatabaseHelper(Context context,String name,int version){this(context, name,null,version);}//创建数据库public void onCreate(SQLiteDatabase db) {Log.i(SWORD,"create a Database");//创建数据库sql语句String sql = "create table user(id int,name varchar(20))";//执行创建数据库操作db.execSQL(sql);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//创建成功,日志输出提示Log.i(SWORD,"update a Database");}}

布局资源文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" ><Button     android:id="@+id/createDatabase"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="@string/createDatabse"/><Button     android:id="@+id/updateDatabase"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="@string/updateDatabase"/><Button     android:id="@+id/insert"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="@string/insert"/><Button     android:id="@+id/update"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="@string/update"/><Button     android:id="@+id/query"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="@string/query"/><Button     android:id="@+id/delete"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="@string/delete"/></LinearLayout>

在Activity中进行增删改查操作,源码:

package cn.android.sword.sqlite;import cn.android.sword.sqlite.db.DatabaseHelper;import android.app.Activity;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class SQLiteActivity extends Activity implements OnClickListener{    private final static String SWORD="SWORD";    //声明五个控件对象    Button createDatabase=null;    Button updateDatabase=null;    Button insert=null;    Button update=null;    Button query=null;    Button delete=null;        public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        findViews();    }private void findViews() {//根据控件ID得到控件createDatabase = (Button) this.findViewById(R.id.createDatabase);updateDatabase = (Button) this.findViewById(R.id.updateDatabase);insert = (Button) this.findViewById(R.id.insert);update = (Button) this.findViewById(R.id.update);query = (Button) this.findViewById(R.id.query);delete = (Button) this.findViewById(R.id.delete);//添加监听器createDatabase.setOnClickListener(this);updateDatabase.setOnClickListener(this);insert.setOnClickListener(this);update.setOnClickListener(this);query.setOnClickListener(this);delete.setOnClickListener(this);}@Overridepublic void onClick(View v) {//判断所触发的被监听控件,并执行命令switch(v.getId()){//创建数据库case R.id.createDatabase://创建一个DatabaseHelper对象DatabaseHelper dbHelper1 = new DatabaseHelper(SQLiteActivity.this, "test_db");//取得一个只读的数据库对象SQLiteDatabase db1 = dbHelper1.getReadableDatabase();break;//更新数据库case R.id.updateDatabase:DatabaseHelper dbHelper2 = new DatabaseHelper(SQLiteActivity.this, "test_db", 2);SQLiteDatabase db2 = dbHelper2.getReadableDatabase();break;//插入数据case R.id.insert://创建存放数据的ContentValues对象ContentValues values = new ContentValues();//像ContentValues中存放数据values.put("id", 1);values.put("name","zhangsan");DatabaseHelper dbHelper3 = new DatabaseHelper(SQLiteActivity.this, "test_db");SQLiteDatabase db3 = dbHelper3.getWritableDatabase();//数据库执行插入命令db3.insert("user", null, values);break;//更新数据信息case R.id.update:DatabaseHelper dbHelper4 = new DatabaseHelper(SQLiteActivity.this, "test_db");SQLiteDatabase db4 = dbHelper4.getWritableDatabase();ContentValues values2 = new ContentValues();values2.put("name", "xiaosan");db4.update("user", values2, "id=?", new String[]{"1"});break;//查询信息case R.id.query:DatabaseHelper dbHelper5 = new DatabaseHelper(SQLiteActivity.this, "test_db");SQLiteDatabase db5 = dbHelper5.getReadableDatabase();//创建游标对象Cursor cursor = db5.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null, null);//利用游标遍历所有数据对象while(cursor.moveToNext()){String name = cursor.getString(cursor.getColumnIndex("name"));//日志打印输出Log.i(SWORD,"query-->"+name);}break;//删除记录case R.id.delete:DatabaseHelper dbHelper6 = new DatabaseHelper(SQLiteActivity.this,"test_db");SQLiteDatabase db6 = dbHelper6.getWritableDatabase();db6.delete("user", "id=?", new String[]{"1"});break;default:Log.i(SWORD,"error");break;}}}

在虚拟机中运行:


点击createDatabase按钮查看日志输出:


我们看到成功打印了语句,说明我们的数据库已经创建完毕,那么我们在哪里找到这个数据库呢,当然,有很多中方法,我采用的是一种相对比较麻烦的,不过我用的很顺手,

在File Explorer下的data下的data文件夹中找到我们创建该项目时的包名(cn.android.sword.sqlite),

导出test_db文件,打开这个数据库文件我们可以用SQLite Expert或Navicat软件,我用的是Navicat;

将test_db导入到软件中就可以查看了,一次点击insert,update,query和delete可以看到数据库中数据变化的预期的结果。

原创粉丝点击