代码:
首先写个helper 类去继承SqliteOpenHelper:
package com.qianfeng.sqliteopenhelper.manager;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class MySqliteHelper extends SQLiteOpenHelper{
private final static String NAME ="info.db";
private final static int VERSION = 2;
/**
*
* @param context 上下文对象
* @param name 数据库名称
* @param factory CursorFactory
* @param version 版本号
*/
public MySqliteHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
public MySqliteHelper(Context context){
super(context, NAME, null, VERSION);
}
/**
* 第一次创建数据库的时候 回调该方法
*/
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String sql ="create table person(_id integer primary key,name varchar(16),age integer) ";
db.execSQL(sql);//数据库执行 sql语句(除了 查询语句)
}
/**
* 数据库版本发生改变时调用
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
//一般想升级数据库 newVersion的值一定要大于oldVersion
if(newVersion!=oldVersion){
Log.i("==TAG==", "数据库发生改变");
}
}
/**
* 当数据库被打开时 回调该方法
*/
@Override
public void onOpen(SQLiteDatabase db) {
// TODO Auto-generated method stub
super.onOpen(db);
Log.i("==TAG==", "数据库被打开了");
}
}
如何去使用:
方法一:使用sql语句
package com.qianfeng.sqliteopenhelper;
import com.qianfeng.sqliteopenhelper.manager.MySqliteHelper;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.webkit.WebChromeClient.CustomViewCallback;
public class MainActivity extends Activity {
private MySqliteHelper helper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
helper = new MySqliteHelper(MainActivity.this);
}
public void onclickBtn(View v){
switch (v.getId()) {
case R.id.btn_create://创建数据库
SQLiteDatabase db = helper.getWritableDatabase();
db.close();
break;
case R.id.btn_insert://向数据库添加数据
SQLiteDatabase db1 = helper.getWritableDatabase();
String sql_insert ="insert into person values(1,'zhangsan',34)";
String sql_insert1 ="insert into person values(2,'lisi',35)";
String sql_insert2 ="insert into person values(3,'wangwu',36)";
for(int i =5;i<16;i++){
String sql_insert3 ="insert into person values("+i+",'wangwu',36)";
System.out.println("==>"+sql_insert3);
db1.execSQL(sql_insert3);
}
db1.execSQL(sql_insert);//execSQL执行指定的sql语句
db1.execSQL(sql_insert1);
db1.execSQL(sql_insert2);
db1.close();
break;
case R.id.btn_query://查询数据
SQLiteDatabase db2= helper.getWritableDatabase();
String sql_query = "select * from person";
Cursor cursor = db2.rawQuery(sql_query, null);//执行Sql语句进行指定的查询
cursor.moveToFirst();//确保cursor 查询时 从第一行开始
while(cursor.moveToNext()){//判断下条语句是否存在如果存在 我们解析数据 不存在 结束
// int id = cursor.getInt(0);//得到指定的字段(根据表中指定的下标)
// String name = cursor.getString(1);
// int age = cursor.getInt(2);
//根据字段名称得到下标
int id = cursor.getInt(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
Log.i("==TAG==", "-id-"+id+"-name-"+name+"-age-"+age);
}
db2.close();
break;
case R.id.btn_update://修改数据
SQLiteDatabase db3= helper.getWritableDatabase();
String sql_update = "update person set name = 'haha' where _id = 1";
db3.execSQL(sql_update);
db3.close();
break;
case R.id.btn_delete://删除数据
SQLiteDatabase db4= helper.getWritableDatabase();
String sql_delete = "delete from person where _id = 2";
db4.execSQL(sql_delete);
db4.close();
break;
default:
break;
}
}
}
方法二 :使用Api方法
package com.qianfeng.sqliteopenhelper;
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 com.qianfeng.sqliteopenhelper.manager.MySqliteHelper;
public class SqliteApiActivity extends Activity {
private MySqliteHelper helper;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
helper = new MySqliteHelper(SqliteApiActivity.this);
}
public void onclickBtn(View v) {
switch (v.getId()) {
case R.id.btn_create:
SQLiteDatabase db = helper.getWritableDatabase();
db.close();
break;
case R.id.btn_insert:
SQLiteDatabase db1 = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("_id", 4);
values.put("name", "qqq");
values.put("age", 24);
db1.insert("person", null, values);
values = new ContentValues();
values.put("_id", 1);
values.put("name", "qqq1");
values.put("age", 24);
db1.insert("person", null, values);
values = new ContentValues();
values.put("_id", 2);
values.put("name", "qqq2");
values.put("age", 34);
db1.insert("person", null, values);
values = new ContentValues();
values.put("_id", 3);
values.put("name", "qq33q1");
values.put("age", 24);
/**
* 参数1:数据库表名 参数2:表示如果数据为空 null 参数3: 添加map数据 里面有 字段名称和值
*/
long l = db1.insert("person", null, values);
if (l > 0) {
Log.i("==TAG==", "添加数据成功");
} else {
Log.i("==TAG==", "添加数据没成功。。。");
}
db1.close();
break;
case R.id.btn_query:
SQLiteDatabase db2 = helper.getWritableDatabase();
/**
* 参数1:数据库中表名
* 参数2:表示查询数据表中的字段的数组
* 参数3:表示查询的条件 "_id=? and name =?"
* 参数4:表示查询条件的值 new String[]{1+"","zhangsan"}
* 参数5:表示数据表中的分组字段
* 参数6:having 字段 在where 条件后再次筛选
* 参数7:orderby 按顺序查找
*/
Cursor cursor = db2.query("person", null, null, null, null, null,
null);
while (cursor.moveToNext()) {// 判断下条语句是否存在如果存在 我们解析数据 不存在 结束
// int id = cursor.getInt(0);//得到指定的字段(根据表中指定的下标)
// String name = cursor.getString(1);
// int age = cursor.getInt(2);
// 根据字段名称得到下标
int id = cursor.getInt(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
Log.i("==TAG==", "-id-" + id + "-name-" + name + "-age-" + age);
}
db2.close();
break;
case R.id.btn_update:
SQLiteDatabase db3 = helper.getWritableDatabase();
ContentValues values2 = new ContentValues();
values2.put("name", "fff");
/**
* 参数1:表名
* 参数2:要想某个字段项
* 参数3 :where 条件语句 "_id=?"
* 参数4:条件语句的值 new String[]{1+""}
*/
int flag = db3.update("person", values2, "_id = ?", new String[]{1+""});
if(flag>0){
Log.i("TAG", "修改成功");
}else{
Log.i("TAG", "修改不成功");
}
db3.close();
break;
case R.id.btn_delete:
SQLiteDatabase db4 = helper.getWritableDatabase();
/**
*
* 参数1:表名
* 参数2 :where 条件语句 "_id=?"
* 参数3:条件语句的值 new String[]{1+""}
*
*/
int flag1 =db4.delete("person", "_id = ?", new String []{1+""});
if(flag1>0){
Log.i("TAG", "删除成功");
}else{
Log.i("TAG", "删除不成功");
}
db4.close();
break;
default:
break;
}
}
}