安卓SQLite数据库操作(上)

安卓系统自带数据库,名为SQLite。这篇文章我们用一个Demo来讲解安卓操作数据库的例子。

By the way,

安卓创建的数据库文件存放在/data/data/<包名>/database 下,后缀名一般为xxx.db

看到数据库文件,我们一般使用一款名为 SQLite Expert 的可视化工具来查看。

下面我们通过一个简单的例子来,创建一个数据,数据库里面创建一个表格。

注意,虽然我们在安卓开发中有包装好的api可以使用,但是sql语句我们最好还是掌握比较好。

先看图吧。

如图所示,下面是用 SQLite Expert打开后的界面,运行app后,点击按钮就会创建一个名为people的数据库,数据库下有一个Girl的表。(如果没有创建表,数据下面也有一个表,那个是系统自动生成的表,但我们不用理会。)

然后看代码

布局文件 activity_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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.example.db.MainActivity" >

    <Button
        android:onClick="Create_Datebase"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Create Datebase" />

</LinearLayout>

java文件

MainActivity.java

package com.example.db;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;


public class MainActivity extends Activity {
    
    private mySQLite myDatebaseHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        myDatebaseHelper = new mySQLite(this, "people.db", null, 1);
     
    }
    
    public void Create_Datebase(View v){

        /*
         * 如果数据库没有被创建,就创建并获取一个可写(其实也可以读)的数据库 如果数据库被创建,就直接获取一个可写(其实也可以读)的数据库
         * 路径data/data/database/people.db
         */
        myDatebaseHelper.getWritableDatabase();
        
    }

}

mySQLite.java

package com.example.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;

//创建SQLLite需要继承SQLiteOpenHelper类抽象类
public class mySQLite extends SQLiteOpenHelper{
    
    public static final String CREATE_GIRL = "create table Gril(_id integer primary key autoincrement,Name char(20),Age integer,Phone char(20))" ;
    private Context mContext;

    /*
     * 构造方法参数说明
     * 第一个:传入上下文对象
     * 第二个:要创建的数据库名字
     * 第三个:油标工厂,传入油标对象,其实就是一个指针的功能。和ResultSet功能差不多,这个参数一般传入null
     * 第四个:数据库版本号,用于升级的时候调用。版本号必须大于1
     * 构造方法四个参数传入其实是给父类调用的。
     * */
    public mySQLite(Context context, String name, CursorFactory factory,
            int version) {
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub
        mContext = context;
    }

    //数据库被创建的时候会调用这个方法
    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        /*db.execSQL(CREATE_BOOK);
        Toast.makeText(mContext,"Create Successded",0).show();*/
        db.execSQL(CREATE_GIRL);
        Toast.makeText(mContext,"Create Successded",0).show();
    }
    //数据库升级的时候调用
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        
    }

}

 

posted @ 2016-04-19 00:54  _Vincent  阅读(1031)  评论(0编辑  收藏  举报