针对于数据库本身,继承自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();
}
}