SqliteDatabase之SqliteOpenHelper(1)

来源:互联网 发布:用什么软件下载电视剧 编辑:程序博客网 时间:2024/06/04 17:36

代码:

首先写个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);}/** * 第一次创建数据库的时候  回调该方法 */@Overridepublic void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stubString sql ="create table person(_id integer primary key,name varchar(16),age integer) ";db.execSQL(sql);//数据库执行 sql语句(除了  查询语句)}/** * 数据库版本发生改变时调用  */@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stub//一般想升级数据库   newVersion的值一定要大于oldVersionif(newVersion!=oldVersion){Log.i("==TAG==", "数据库发生改变");}}/** * 当数据库被打开时  回调该方法 */@Overridepublic void onOpen(SQLiteDatabase db) {// TODO Auto-generated method stubsuper.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;@Overrideprotected 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;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.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;}}}


0 0
原创粉丝点击