你的位置:首页 > 操作系统

[操作系统]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 ="http://schemas.android.com/apk/res/android"  ="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.    int id = item.getItemId();    if (id == R.id.action_settings) {      return true;    }    return super.onOptionsItemSelected(item);  }}