Android学习笔记(SQLite的简单使用)

1.SQLite介绍

     SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了

2.SQLiteOpenHelper的使用方法

   常用方法
    1.getReadableDatabase():得到可读的数据库,返回一个SQLiteDatabase对象,提供一些管理数据库的方法
    2.getWritableDatabase():得到一个可写的数据库,返回一个SQLiteDataba
    3.onCreate(SQLiteDatabase db):创建一个表
    4.onOpen(SQLiteDatabase db):打开数据库
    5.onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion):修改数据库的表结构的方法
    6.close()
    当需要操作数据库的时候,必须先获得一个SQLiteOpenHelper,他是一个抽象类,我们必须写一个类,来继承他,继承之后,我们拥有了getReadableDatabase和getWritableDatabase两个方法,

3.使用adb访问SQLite

进入adb命令行,查询数据库表,和普通的sql语句完全一样(select * from user)

Adb为调试工具,进入命令行 /data/data 当我们创建应用程序的时候,只要应用运行,都会在此目录下生成

当点击创建数据库之后,会生成如下文件夹

Android学习笔记(SQLite的简单使用)

进入Databases

Android学习笔记(SQLite的简单使用)

链接数据库实例

Android学习笔记(SQLite的简单使用)

Android学习笔记(SQLite的简单使用)

4.SQLite实现增删改查的Demo

布局代码(线性水平布局,五个按钮)

<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="com.example.sqlitedemo.MainActivity" >





    <Button 

        android:id="@+id/createBtn"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="创建数据库"/>

    

    <Button 

        android:id="@+id/updateBtn"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="更新数据库"/>

    

    <Button 

        android:id="@+id/insertDataBtn"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="插入数据"/>

    

    <Button 

        android:id="@+id/updateDataBtn"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="更新数据"/>

    

    <Button 

        android:id="@+id/queryDataBtn"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="查询数据"/>

</LinearLayout>

数据库工具类代码

package com.example.sqlitedemo.db;



import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.database.sqlite.SQLiteOpenHelper;



public class DatabaseHelper extends SQLiteOpenHelper{



    private static final int VERSION = 1;

    /**

     * 在sqliteOpenHelper子类中必须有该构造函数,

     * 第一个参数为activity

     * 第二个参数:表的名字

     * 第三个函数:null

     * 第四个参数:数据库的版本

     */

    

    public DatabaseHelper(Context context, String name, CursorFactory factory,

            int version) {

        super(context, name, factory, version);

        // TODO Auto-generated constructor stub

    }



    /**

     * 构造函数2

     * @param context

     * @param name

     */

    public  DatabaseHelper(Context context, String name) {

        // TODO Auto-generated constructor stub

        this(context, name, VERSION);

    }

    

    /**

     * 构造函数3

     * @param context

     * @param name

     * @param version

     */

    public  DatabaseHelper(Context context, String name,int version) {

        // TODO Auto-generated constructor stub

        this(context, name, null, version);

    }

    

    /**

     * 该函数在第一次创建数据库的时候执行,第一次得到SQLiteDatabase对象的时候,调用次方法

     * @param db

     */

    @Override

    public void onCreate(SQLiteDatabase db) {

        // TODO Auto-generated method stub

        System.out.println("创建数据库");

        String strCreateSQL = "create table user(id int,name varchar(20))";

        db.execSQL(strCreateSQL);

    }



    /**

     * 执行更新数据库

     * @param db

     * @param oldVersion

     * @param newVersion

     */

    @Override

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        // TODO Auto-generated method stub

        System.out.println("更新数据库");

    }



}

数据库操作类代码

 

package com.example.sqlitedemo;



import com.example.sqlitedemo.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.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.Toast;



public class MainActivity extends Activity {



    private Button createBtn;

    private Button updateBtn;

    private Button insertDataBtn;

    private Button updateDataBtn;

    private Button queryDataBtn;

    

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        createBtn = (Button) findViewById(R.id.createBtn);

        updateBtn = (Button) findViewById(R.id.updateBtn);

        insertDataBtn = (Button) findViewById(R.id.insertDataBtn);

        updateDataBtn = (Button) findViewById(R.id.updateDataBtn);

        queryDataBtn = (Button) findViewById(R.id.queryDataBtn);

        

        createBtn.setOnClickListener(new createListener());

        updateBtn.setOnClickListener(new updateListener());

        insertDataBtn.setOnClickListener(new insertDataListener());

        updateDataBtn.setOnClickListener(new updateDataListener());

        queryDataBtn.setOnClickListener(new queryDataListener());

    }



    class createListener implements OnClickListener{



        @Override

        public void onClick(View v) {

            // TODO Auto-generated method stub

            DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl");

            SQLiteDatabase  db = dbHelper.getWritableDatabase();

            

        }

    }

    

    class updateListener  implements OnClickListener{



        @Override

        public void onClick(View v) {

            // TODO Auto-generated method stub

            //更改数据库实力的版本。默认就会执行onUpgrade方法

            DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2);

            SQLiteDatabase  db = dbHelper.getWritableDatabase();

        }

        

    }

    

    class insertDataListener  implements OnClickListener{



        @Override

        public void onClick(View v) {

            // TODO Auto-generated method stub

            //生成一个数据库写入时存放数据的对象,键为列名,值为值

            ContentValues values = new ContentValues();

            values.put("id", 1);

            values.put("name", "mzl");

            

            //更改数据库实力的版本。默认就会执行onUpgrade方法

            DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2);

            SQLiteDatabase  db = dbHelper.getWritableDatabase();

            db.insert("user", null, values);

            Toast.makeText(MainActivity.this, "插入成功", Toast.LENGTH_SHORT).show();

        }

        

    }

    

    class updateDataListener  implements OnClickListener{



        @Override

        public void onClick(View v) {

            // TODO Auto-generated method stub

            ContentValues values = new ContentValues();

            values.put("name", "mzl修改");

            //更改数据库实力的版本。默认就会执行onUpgrade方法

            DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2);

            SQLiteDatabase  db = dbHelper.getWritableDatabase();

            db.update("user", values, "id=?", new String[]{"1"});

            Toast.makeText(MainActivity.this, "更新成功", Toast.LENGTH_SHORT).show();

        }

        

    }

    

    

    class queryDataListener  implements OnClickListener{



        @Override

        public void onClick(View v) {

            // TODO Auto-generated method stub

            //更改数据库实力的版本。默认就会执行onUpgrade方法

            DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2);

            SQLiteDatabase  db = dbHelper.getReadableDatabase(); 

            Cursor  cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);

            while(cursor.moveToNext()){

                String name = cursor.getString(cursor.getColumnIndex("name"));

                Toast.makeText(MainActivity.this, name, Toast.LENGTH_SHORT).show();

            }

        }

        

    }

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.

        getMenuInflater().inflate(R.menu.main, menu);

        return true;

    }



    @Override

    public boolean onOptionsItemSelected(MenuItem item) {

        // Handle action bar item clicks here. The action bar will

        // automatically handle clicks on the Home/Up button, so long

        // as you specify a parent activity in AndroidManifest.xml.

        int id = item.getItemId();

        if (id == R.id.action_settings) {

            return true;

        }

        return super.onOptionsItemSelected(item);

    }

}

 

你可能感兴趣的:(Android学习)