SqliteDatabase之SqliteOpenHelper(1)

代码:

首先写个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;
		}
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值