package com.example.ipcplayer.provider;
import com.example.ipcplayer.utils.LogUtil;
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 MusicDBHelper extends SQLiteOpenHelper{
private final static String DB_NAME = "MusicDB.db";
private final static int DB_VERSION = 1;
public final static String TABLE_MUSICINFO = "musicInfo";
public final static String TABLE_DOWNLOADINFO = "downloadInfo";
private static String TAG = "MusicDBHelper";
private SQLiteDatabase mDatabase = null ;
private static MusicDBHelper mInstance ;
public MusicDBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
// TODO Auto-generated constructor stub
LogUtil.d(TAG + "MusicDBHelper initialized");
openDatabase();
}
public static synchronized MusicDBHelper getInstance(Context context){
if(mInstance == null ){
LogUtil.d(TAG + " getInstance ");
mInstance = new MusicDBHelper(context);
}
return mInstance ;
}
private void openDatabase(){
try{
LogUtil.d(TAG + " openDatabase ");
mDatabase = getWritableDatabase();
}catch(Exception e){
LogUtil.d(TAG + " openDatebase error ");
mDatabase = null;
e.printStackTrace();
}
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
createTable(db);
LogUtil.d(TAG + " table's successfully created !");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
dropTable(db);
LogUtil.d(TAG + "drop table ok! ");
createTable(db);
mDatabase = db;
LogUtil.d(TAG + "create table ok !");
}
@Override
public void onOpen(SQLiteDatabase db) {
// TODO Auto-generated method stub
super.onOpen(db);
// db.isOpen();
}
public void closeDatabase(){
if(mDatabase != null && mDatabase.isOpen())
{
try{
LogUtil.d(TAG + " closeDatabase ");
mDatabase.close();
}catch(Exception e){
LogUtil.d(TAG + " close Database error ");
e.printStackTrace();
}
}
}
//column name equals the same column name of MusicDB
public void createTable(SQLiteDatabase db){
try{
String sql1 = "CREATE TABLE IF NOT EXISTS " + TABLE_MUSICINFO +
" ( _id INTEGER PRIMARY KEY AUTOINCREMENT," +
" _count INTEGER," +
" musicname TEXT," +
" artistname TEXT," +
" albumnname TEXT," +
" size INTEGER," +
" _data TEXT" +
" )" ;
LogUtil.d(TAG + "create sql1 "+ sql1);
if(db == null){
LogUtil.d(TAG + "tmd db is null");
}
db.execSQL(sql1);
String sql2 = "CREATE TABLE IF NOT EXISTS " + TABLE_DOWNLOADINFO +
" ( _id INTEGER PRIMARY KEY AUTOINCREMENT,"+
" url TEXT," +
" musicname TEXT," +
" artistname TEXT," +
" last_modify INTEGER," +
" total_size INTEGER," +
" download_size INTEGER" +
" )";
LogUtil.d(TAG + "create sql2 "+ sql2);
db.execSQL( sql2);
}catch(Exception e ){
LogUtil.e(TAG +" CREATE TABLE ERROR !");
e.printStackTrace();
}
}
public void dropTable(SQLiteDatabase db){
try{
db.execSQL("DROP TABLE IF EXISTS " + TABLE_MUSICINFO);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_DOWNLOADINFO);
}catch(Exception e){
e.printStackTrace();
Log.e(TAG,"drop table error");
}
}
}