android database sqlite的使用

首先 系统有个类叫SQLiteOpenHelper 现在知道知道 这个是帮你打开数据库就可以了

自己实现个

public class DatabaseHelper extends SQLiteOpenHelper  {

	private static final int DATABASE_VERSION = 1;
        
        //构造方法  这里就会检查super()里面第二个参数,看看有没有这个数据据,如果有就连接,如果没有就调用下面的
        //onCreate方法创建一个数据库,然后取得连接。
	public DatabaseHelper(Context context) {
		super(context, LauncherContent.DB_NAME, null, DATABASE_VERSION);
	}
	
	public void onCreate(SQLiteDatabase db) {
		db.execSQL("Create table "
                + LauncherContent.APPS_TABLE_NAME
                + "( _id INTEGER PRIMARY KEY AUTOINCREMENT," +
                	"PACKAGE_NAME TEXT, " +
                	"OPEN_TIMES INTEGER," +
                	"IS_SHOW INTEGER);");
	}
        //看到super()里面最后一个参数了没,当verision改变的时候条用onUpgrade,开始的时候先不过管这个。
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		 db.execSQL("DROP TABLE IF EXISTS " 
				 + LauncherContent.APPS_TABLE_NAME + 
				 ", " + LauncherContent.MUSIC_TABLE_NAME +
				 ", " + LauncherContent.VIDEO_TABLE_NAME + 
				 ", " + LauncherContent.OTHERS_TABLE_NAME);
         onCreate(db);
	}

}


好了 这个类就可以帮助你打开数据库了。

然后在你想要打开的时候用下面的代码打开

class AppsLibraryAdapter extends BaseAdapter {
	private Context mContext ;
	private HashMap<String, Object> mPackNameMap = new HashMap<String, Object>();
	private ArrayList<HashMap<String, Object>> mAppList = new ArrayList<HashMap<String,Object>>();
	private SQLiteDatabase mDb;
	private DatabaseHelper mHelper;
	
	public AppsLibraryAdapter(Context context){
		this.mContext = context;
		mAppList = getList();
                //我的名字起的不好。。。现在这个mHelper就是和数据库取得连接了。
		mHelper = new DatabaseHelper(context);
               //mDb这个时候得到一个可以读可以写的数据库对象,反正以后有什么时候找mDb就可以了查询啊,增加啊,修改啊,删除啊,嗯。
		mDb = mHelper.getWritableDatabase();
	}

上面的类不完整哦。。。直接复制就木有用的。。。。


下面 再给出对数据库的查询,增加和修改的操作

view.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
					int id = ((CVButton)v).getID();
					HashMap<String, Object> item = mAppList.get(id);
					Log.e("onClick", (String)item.get("ItemText"));
					startActivity((String) item.get("ItemText"));
					String[] columns ={"PACKAGE_NAME","OPEN_TIMES"};
					String[] selectionArgs ={(String)item.get("ItemText")};
					//这里就是查询啦
                                        //第一个参数就是表的名字,第二个参数就是返回那些列的信息,第三个参数就是查询条件了 第四个参数就是一会替换
                                        //第三个参数中的?号的。大概懂了吧?不懂多试试。。。。
                                        Cursor reslutCursor = mDb.query(LauncherContent.APPS_TABLE_NAME, columns, "PACKAGE_NAME=?",
							selectionArgs, null, null, null);
					//这里的if看看查询结果是不是空。。。。
					if(reslutCursor.getCount()==0){
                                               //如果是空,就插入一条数据
						ContentValues contentValues = new ContentValues();
	                                        contentValues.put("PACKAGE_NAME", (String)item.get("ItemText"));
	                                        contentValues.put("OPEN_TIMES", 1);
						mDb.insert(LauncherContent.APPS_TABLE_NAME, null, contentValues);
					}else{
                                                //不是空 就更新数据 这里一定要注意啊moveToFirst cursor返回值最开始是指向第一个结果前面的位置哦
						reslutCursor.moveToFirst();
						int openTimes = reslutCursor.getInt(reslutCursor.getColumnIndex("OPEN_TIMES"));
						ContentValues contentValues = new ContentValues();
	                                        contentValues.put("PACKAGE_NAME", (String)item.get("ItemText"));
	                                        contentValues.put("OPEN_TIMES", ++openTimes);
						//这里和上面的查询几乎一样啦。。。返回值是有几行数据更新了~我这里主要想看下我更新成功了没有。。
                                                //忽略下面的log信息吧~~
                                                int a = mDb.update(LauncherContent.APPS_TABLE_NAME, contentValues, "PACKAGE_NAME=?", selectionArgs);
						Log.e("affective", " "+a+"COLUMNS INDEX"+reslutCursor.getColumnIndex("OPEN_TIMES")+"open times "+openTimes);
						reslutCursor.close();
					}
			}
		});



大概这样了。。。。我不会排版原谅我 囧。。。。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值