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 当我们创建应用程序的时候,只要应用运行,都会在此目录下生成

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

技术分享

进入Databases

技术分享

链接数据库实例

技术分享

技术分享

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);
    }
}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。