android Sqlite数据库使用方法小例

针对于数据库本身,继承自SQLiteOpenHelper,向外提供了获取数据库操作实例的接口和更新数据库的接口;

public class MySqliteHelper extends SQLiteOpenHelper
{
    private static int DB_VERSION = 2;
    private static String DB_NAME = "love.db";
    public static String Love_TABLE = "love";
    public static String FAMILY_TABLE = "family";
    private Context mContext = null;
    private static MySqliteHelper helper = null;


    public MySqliteHelper(Context context, String name, CursorFactory factory, int version)
    {
        super(context, name, factory, version);
        mContext = context;
        Log.e(DB_NAME, "MySqliteHelper");
    }


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


    public static MySqliteHelper getInstance(Context context)
    {
        if (helper == null)
        {
            helper = new MySqliteHelper(context, DB_NAME, null, DB_VERSION);
        }
        return helper;
    }


    public static MySqliteHelper updateDB(Context context, int dbVersion)
    {
        helper = new MySqliteHelper(context, DB_NAME, null, dbVersion);
        return helper;
    }


    @Override
    public void onCreate(SQLiteDatabase db)
    {
        Log.e(DB_NAME, "oncreate");
        String sqlLove = "create table "
                + Love_TABLE
                + " (id INTEGER PRIMARY KEY AUTOINCREMENT,name varchar(20),age int,sex varchar(10))";
        String sqlfamily = "create table "
                + FAMILY_TABLE
                + " (id INTEGER PRIMARY KEY AUTOINCREMENT,name varchar(20),age int,sex varchar(10))";
        Log.e(DB_NAME, "create table:" + sqlLove);
        db.execSQL(sqlLove);
        Log.e(DB_NAME, "create table:" + sqlfamily);
        db.execSQL(sqlfamily);
    }


    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
    {
        Log.e(DB_NAME, " onUpgrade: oldVersion:" + oldVersion + ",newVersion:" + newVersion);
        db.execSQL("drop table if exists " + Love_TABLE);
        db.execSQL("drop table if exists " + FAMILY_TABLE);
        onCreate(db);


    }


}


针对数据库的使用,提供了如下功能样例:创建数据库,更新数据库,插入数据库,更新数据,查询数据,删除数据,随机插入10条数据,对比数据等内容:

样例如下:

sql_main.xml的布局设置:

<?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="创建数据库" />


    <Button
        android:id="@+id/updateDatabase"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="更新数据库" />


    <Button
        android:id="@+id/insert"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="插入数据" />


    <Button
        android:id="@+id/update"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="更新数据" />


    <Button
        android:id="@+id/query"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="查询数据" />


    <Button
        android:id="@+id/delete"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="删除数据" />
    <Button
        android:id="@+id/inser_ten"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="随机插入10条数据" />
    <Button
        android:id="@+id/compare"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="对比数据" />


</LinearLayout>


程序代码的activity书写方法:

/**
 * Copyright (C) 2016 The SkyTvOS Project
 *
 * Version     Date           Author
 * ─────────────────────────────────────
 *   1.0       2016-9-8         wolfboyjiang
 *
 */


package com.example.androidtest;


import java.util.Random;


import com.example.androidtest.sqlite.MySqliteHelper;


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;
import android.widget.Toast;


public class SqlActivity extends Activity
{
    // 声明各个按钮
    private Button createBtn;
    private Button insertBtn;
    private Button updateBtn;
    private Button queryBtn;
    private Button deleteBtn;
    private Button ModifyBtn;
    private Button insertTenBtn;
    private Button compareButton ;


    private static final String TAG = "sql";
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sql_main);
        // 调用creatView方法
        creatView();
        // setListener方法
        setListener();
    }


    // 通过findViewById获得Button对象的方法
    private void creatView()
    {
        createBtn = (Button) findViewById(R.id.createDatabase);
        updateBtn = (Button) findViewById(R.id.updateDatabase);
        insertBtn = (Button) findViewById(R.id.insert);
        ModifyBtn = (Button) findViewById(R.id.update);
        queryBtn = (Button) findViewById(R.id.query);
        deleteBtn = (Button) findViewById(R.id.delete);
        insertTenBtn = (Button) findViewById(R.id.inser_ten);
        compareButton = (Button) findViewById(R.id.compare);
    }


    // 为按钮注册监听的方法
    private void setListener()
    {
        createBtn.setOnClickListener(new CreateListener());
        updateBtn.setOnClickListener(new UpdateListener());
        insertBtn.setOnClickListener(new InsertListener());
        ModifyBtn.setOnClickListener(new ModifyListener());
        queryBtn.setOnClickListener(new QueryListener());
        deleteBtn.setOnClickListener(new DeleteListener());
        insertTenBtn.setOnClickListener(new InsertTenListener());
        compareButton.setOnClickListener(new CompareListener());
    }


    // 创建数据库的方法
    class CreateListener implements OnClickListener
    {


        @Override
        public void onClick(View v)
        {
            // 创建StuDBHelper对象
            MySqliteHelper dbHelper = MySqliteHelper.getInstance(SqlActivity.this);
            // 得到一个可读的SQLiteDatabase对象
            SQLiteDatabase db = dbHelper.getReadableDatabase();
            Toast.makeText(SqlActivity.this, "create db", Toast.LENGTH_SHORT).show();
        }
    }
    // 插入十条数据
    class InsertTenListener implements OnClickListener
    {


        @Override
        public void onClick(View v)
        {
            // 创建StuDBHelper对象
            MySqliteHelper dbHelper = MySqliteHelper.getInstance(SqlActivity.this);
            // 得到一个可读的SQLiteDatabase对象
            SQLiteDatabase db = dbHelper.getReadableDatabase();
            Random random = new Random();
            for (int i = 0; i < 10; i++)
            {
             // 生成ContentValues对象 //key:列名,value:想插入的值
                ContentValues cv = new ContentValues();
                // 往ContentValues对象存放数据,键-值对模式
                cv.put("name", "xiaoming"+i);
                cv.put("age", 20+i);
                cv.put("sex", random.nextBoolean()? "male":"remale");
                // 调用insert方法,将数据插入数据库
                db.insert("love", null, cv);
                // 关闭数据库
                
                Toast.makeText(SqlActivity.this, "insert db:xiaoming , 21 , male ;love ",
                        Toast.LENGTH_SHORT).show();
            }
            db.close();
            Toast.makeText(SqlActivity.this, "create db", Toast.LENGTH_SHORT).show();
        }
    }


    // 更新数据库的方法
    class UpdateListener implements OnClickListener
    {


        @Override
        public void onClick(View v)
        {
            // 数据库版本的更新,由原来的1变为2
            MySqliteHelper dbHelper = MySqliteHelper.getInstance(SqlActivity.this);
            SQLiteDatabase db = dbHelper.getReadableDatabase();
            Toast.makeText(SqlActivity.this, "update db", Toast.LENGTH_SHORT).show();
        }
    }


    // 插入数据的方法
    class InsertListener implements OnClickListener
    {


        @Override
        public void onClick(View v)
        {
            MySqliteHelper dbHelper = MySqliteHelper.getInstance(SqlActivity.this);
            // 得到一个可写的数据库
            SQLiteDatabase db = dbHelper.getWritableDatabase();


            // 生成ContentValues对象 //key:列名,value:想插入的值
            ContentValues cv = new ContentValues();
            // 往ContentValues对象存放数据,键-值对模式
            cv.put("id", 1);
            cv.put("name", "xiaoming");
            cv.put("age", 21);
            cv.put("sex", "male");
            // 调用insert方法,将数据插入数据库
            db.insert("love", null, cv);
            // 关闭数据库
            db.close();
            Toast.makeText(SqlActivity.this, "insert db:xiaoming , 21 , male ;love ",
                    Toast.LENGTH_SHORT).show();
        }
    }


    // 查询数据的方法
    class QueryListener implements OnClickListener
    {


        @Override
        public void onClick(View v)
        {


            MySqliteHelper dbHelper = MySqliteHelper.getInstance(SqlActivity.this);
            // 得到一个可写的数据库
            SQLiteDatabase db = dbHelper.getReadableDatabase();
            // 参数1:表名
            // 参数2:要想显示的列
            // 参数3:where子句
            // 参数4:where子句对应的条件值
            // 参数5:分组方式
            // 参数6:having条件
            // 参数7:排序方式
            Cursor cursor = db.query("love", new String[] { "id", "name", "age", "sex" }, "id>?",
                    new String[] { "1" }, null, null, null);
            while (cursor.moveToNext())
            {
                String name = cursor.getString(cursor.getColumnIndex("name"));
                String age = cursor.getString(cursor.getColumnIndex("age"));
                String sex = cursor.getString(cursor.getColumnIndex("sex"));
                System.out.println("query------->" + "姓名:" + name + " " + "年龄:" + age + " " + "性别:"
                        + sex);
                Log.e(TAG, "QueryListener :"+ "姓名:" + name + " " + "年龄:" + age + " " + "性别:"
                        + sex);
                Toast.makeText(SqlActivity.this,
                        "查询 db:" + "姓名:" + name + " " + "年龄:" + age + " " + "性别:" + sex,
                        Toast.LENGTH_SHORT).show();
            }
            // 关闭数据库
            db.close();
        }
    }


    // 修改数据的方法
    class CompareListener implements OnClickListener
    {


        @Override
        public void onClick(View v)
        {


            MySqliteHelper dbHelper = MySqliteHelper.getInstance(SqlActivity.this);
            // 得到一个可写的数据库
            SQLiteDatabase db = dbHelper.getWritableDatabase();
         // 参数1:表名
            // 参数2:要想显示的列
            // 参数3:where子句
            // 参数4:where子句对应的条件值
            // 参数5:分组方式
            // 参数6:having条件
            // 参数7:排序方式
            Cursor cursor = db.query("love", new String[] { "id", "name", "age", "sex" }, "name > ?",
                    new String[] { "xiaoming3" }, null, null, null);
            while (cursor.moveToNext())
            {
                String name = cursor.getString(cursor.getColumnIndex("name"));
                String age = cursor.getString(cursor.getColumnIndex("age"));
                String sex = cursor.getString(cursor.getColumnIndex("sex"));
                System.out.println("query------->" + "姓名:" + name + " " + "年龄:" + age + " " + "性别:"
                        + sex);
                Log.e(TAG, "QueryListener :"+ "姓名:" + name + " " + "年龄:" + age + " " + "性别:"
                        + sex);
                Toast.makeText(SqlActivity.this,
                        "查询 db:" + "姓名:" + name + " " + "年龄:" + age + " " + "性别:" + sex,
                        Toast.LENGTH_SHORT).show();
            }
            // 关闭数据库
            db.close();
            Toast.makeText(SqlActivity.this, "修改 db:" + "age 21", Toast.LENGTH_SHORT).show();
        }
    }
    // 修改数据的方法
    class ModifyListener implements OnClickListener
    {


        @Override
        public void onClick(View v)
        {


            MySqliteHelper dbHelper = MySqliteHelper.getInstance(SqlActivity.this);
            // 得到一个可写的数据库
            SQLiteDatabase db = dbHelper.getWritableDatabase();
            ContentValues cv = new ContentValues();
            cv.put("age", "21");
            // where 子句 "?"是占位符号,对应后面的"1",
            String whereClause = "id=?";
            String[] whereArgs = { String.valueOf(1) };
            // 参数1 是要更新的表名
            // 参数2 是一个ContentValeus对象
            // 参数3 是where子句
            db.update("love", cv, whereClause, whereArgs);
            Toast.makeText(SqlActivity.this, "修改 db:" + "age 21", Toast.LENGTH_SHORT).show();
        }
    }


    // 删除数据的方法
    class DeleteListener implements OnClickListener
    {


        @Override
        public void onClick(View v)
        {


            MySqliteHelper dbHelper = MySqliteHelper.getInstance(SqlActivity.this);
            // 得到一个可写的数据库
            SQLiteDatabase db = dbHelper.getReadableDatabase();
            String whereClauses = "id=?";
            String[] whereArgs = { String.valueOf(2) };
            // 调用delete方法,删除数据
            db.delete("love", whereClauses, whereArgs);
            Toast.makeText(SqlActivity.this, "删除 db:" + "age 21", Toast.LENGTH_SHORT).show();
        }
    }


    @Override
    protected void onResume()
    {
        // TODO Auto-generated method stub
        super.onResume();
    }


    @Override
    protected void onPause()
    {
        // TODO Auto-generated method stub
        super.onPause();
    }


    @Override
    protected void onStop()
    {
        // TODO Auto-generated method stub
        super.onStop();
    }


    @Override
    protected void onDestroy()
    {
        // TODO Auto-generated method stub
        super.onDestroy();
    }


}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值