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