package com.archermind;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
public class DBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "App.db";
private static final String DATABASE_TABLE = "t_app";
private static final int DATABASE_VERSION = 1;
private final String CREATE_TABLE = "create table if not exists "
+ DATABASE_TABLE + "(id integer not null ,"
+ "Name text not null," + "downUrl text not null,"
+ "state integer not null," + "image blob)";
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
String sql = "drop table if exists" + DATABASE_TABLE;
db.execSQL(sql);
onCreate(db);
}
/**
* 查询取得结果集
*
* @return 结果集
*/
public Cursor query() {
SQLiteDatabase db = this.getReadableDatabase();
return db.query(DATABASE_TABLE, null, null, null, null, null, null);
}
/**
* 通过Id查询该应用
* @param Id
* @return
* 已存在返回true,否则false
*/
public boolean query(int Id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(DATABASE_TABLE, null, "Id = '" + Id
+ "'", null, null, null, null);
if(cursor.moveToFirst()){
cursor.close();
return true;
}
cursor.close();
return false;
}
/**
* 根据Id删除数据
*
* @param Id
* 应用的id
*/
public void delete(int Id) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(DATABASE_TABLE, "Id = '" + Id + "'", null);
}
/**
* 删除所有的数据
*/
public void delete() {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(DATABASE_TABLE, null, null);
}
/**
* 插入数据,
*
* @param Id
* @param Name
* @param downUrl
* @param state
* @param image
*/
public void insert(int Id, String Name, String downUrl,
int state, byte[] image) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("Id", Id);
values.put("Name", Name);
values.put("downUrl", downUrl);
values.put("state", state);
values.put("image", image);
db.insert(DATABASE_TABLE, null, values);
}
/**
* 通过Id来更新状态
* @param Id
* @param state
*/
public void update(int appId,int state){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("state", state);
db.update(DATABASE_TABLE, values, "Id = '" + Id + "'", null);
}
}
在操作数据库的时候 DDMS会报出07-05 10:37:19.093: ERROR/Database(4799): Leak found的错误.
就是数据库连接打开后没有关闭的~
//执行sql语句
public void execSQL(String sql){
SQLiteDatabase db = ...
db.execSQL(sql);
db.close();
}
//查询
SQLiteDatabase db = .....
Cursor cur = db.rawQuery(sql, null);
if(cur!=null){
if(cur.moveToFirst()){
do{
//........
} while(cur.moveToNext());
}
cur.close(); //关闭游标
}
db.close();
分享到:
相关推荐
memory leak tools for android memory leak tools for android
主要介绍了Android Handler leak分析及解决办法详解的相关资料,需要的朋友可以参考下
培训泄漏金丝雀 这是Android实现Leak Canary的程序
主要介绍了Android中Memory Leak原因分析及解决办法,需要的朋友跟着学习下吧。
Android_内存泄漏调试 对于ANDROID游戏开发非常有用!
visual leak detector 2.2 VS2010 VS2008检测内存泄露
memory leak 教程,一步一步解决内存泄漏。
leaktracker - 适用于Android和Java的内存泄漏跟踪库
This program is a tool that help you positioning memory leak locations of an QUALCOMM BREW application on simulator. It can give the call stack of memory leaks (including the locations that MALLOC/...
Leak_monitor for Firefox 4.0-18
VLD 内存泄露检测工具 Visual Leak Detector 2.3.0
mmleak测试代码,主要用作Android来测试内存泄漏的复现效果。
Viual Leak是一款C++内存检测的工具,方便好用!
Visual Leak Detector,防止C++内存泄露的工具,解压后将.h文件拷贝到VC的默认include目录下,将.lib文件拷贝到VC默认的lib目录下。 使用方法:只要在包含入口函数(比如main()函数)的.cpp中包含vld.h就可以了...
A memory leak detection library for Android and Java.
leak monitorleak monitor leak monitor leak monitor leak monitor leak monitor
Visual Leak Detector.zip Visual Leak Detector for Visual C++ 2008/2010/2012/2013 http://vld.codeplex.com/downloads/get/824280