package com.APPShare.db; import java.util.ArrayList; import java.util.List; import com.APPShare.Bean.AppBean; import com.APPShare.Bean.FriendBean; import com.APPShare.Bean.WeiboBean; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; /** * 数据库操作 * [百家姓、短信、联系人的数据库操作] */ public class SQLiteHelper { private static final String TAG = "SQLiteHelper"; public static SQLiteHelper instance; /** * 控制数据库并发标识 [一个线程就1,两个线程就是2,以此类推,没有线程在使用该对象就为0] */ public static int Concurrent = 0; /** * 表中一条数据的名称 */ public static final String KEY_ID = "_id"; /** * 数据库 */ private static final String DB_NAME = "appShare.db"; /** * 数据库版本 */ private static final int DB_VERSION = 1; /** * 本地Context对象 */ private Context mContext = null; /** * 创建表的标示 [根据这个标示可以,创建不同的表,标示不同,所创建的表不同] */ private static String TABLEMARKED = ""; /**--------------APP信息-------------*/ private static String DB_APP_INFO = ""; private static String DB_TABLE_APP_INFO = "app_info"; private static String KEY_APP_NAME = "app_name"; private static String KEY_APP_TYPE = "app_type"; /**-----------用户个人信息----------*/ private static String DB_USER_INFO = ""; private static String DB_TABLE_USER_INFO = "user_info"; private static String KEY_USER_NAME = "user_name"; private static String KEY_USER_PHOTO = "user_photo_url"; private static String KEY_USER_DESCRIPTION = "user_description"; /**----------好友信息--------------*/ private static String DB_FRIEND_INFO = ""; private static String DB_TABLE_FRIEND_INFO = "friend_info"; private static String KEY_FRIEND_NAME = "friend_name"; private static String KEY_FRIEND_PHOTO = "friend_photo"; private static String KEY_FRIEND_DESCRIPTION = "friend_description0"; /** * 执行open()打开数据库时,保存返回的数据库对象 */ private SQLiteDatabase mSQLiteDatabase = null; /** * 由SQLiteOpenHelper继承过来 */ private DatabaseHelper mDatabaseHelper = null; private static class DatabaseHelper extends SQLiteOpenHelper { /** * 构造函数-创建一个数据库 * * @param context */ DatabaseHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(DB_APP_INFO); db.execSQL(DB_USER_INFO); db.execSQL(DB_FRIEND_INFO); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS notes"); onCreate(db); } } /** * 构造函数-取得Context * * @param context */ public SQLiteHelper(Context context) { mContext = context; } public static SQLiteHelper getInstance(Context context) { Concurrent = Concurrent + 1;// 加入一个线程 if (instance == null) { synchronized (SQLiteHelper.class) { if (instance == null) { instance = new SQLiteHelper(context); instance.open(); } } } return instance; } /** * 创建数据库 * * @throws SQLException * 2012-1-11 */ public void open() throws SQLException { // 创建数据库 DB_APP_INFO = "CREATE TABLE " + DB_TABLE_APP_INFO + " (" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_APP_NAME + " TEXT," + KEY_APP_TYPE + " TEXT)"; DB_USER_INFO = "CREATE TABLE " + DB_TABLE_USER_INFO + " (" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_USER_NAME + " TEXT," + KEY_USER_PHOTO + " TEXT," + KEY_USER_DESCRIPTION + " TEXT)"; DB_FRIEND_INFO = "CREATE TABLE " + DB_TABLE_FRIEND_INFO + " (" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_FRIEND_NAME + " TEXT," + KEY_FRIEND_PHOTO + " TEXT," + KEY_FRIEND_DESCRIPTION + " TEXT)"; if (mSQLiteDatabase != null) { if (mSQLiteDatabase.isOpen()){ return; } else { mSQLiteDatabase = mDatabaseHelper.getWritableDatabase(); } } else { mDatabaseHelper = new DatabaseHelper(mContext); mSQLiteDatabase = mDatabaseHelper.getWritableDatabase(); } } /** * 关闭数据库 2011-12-19 */ public void close() { /** 退出一个线程,如果是最后一个线程的退出,则关闭数据库 */ Concurrent = Concurrent - 1; if (Concurrent <= 0) { mDatabaseHelper.close(); instance = null; } } /**插入APPInfo*/ public boolean insertAppName(List<AppBean> appBeanList){ boolean flag; long RecNo = 0; ContentValues initialValues = new ContentValues(); mSQLiteDatabase.beginTransaction(); for(int i=0;i<appBeanList.size();i++){ initialValues.put(KEY_APP_NAME, appBeanList.get(i).getAppName()); initialValues.put(KEY_APP_TYPE, appBeanList.get(i).getType()); RecNo = mSQLiteDatabase.insert(DB_TABLE_APP_INFO, KEY_ID, initialValues); initialValues.clear(); } mSQLiteDatabase.setTransactionSuccessful(); mSQLiteDatabase.endTransaction(); if (RecNo >= 0) { flag = true; } else { flag = false; } return flag; } public Cursor fetchAppName(){ return mSQLiteDatabase.query(DB_TABLE_APP_INFO, new String[]{KEY_ID,KEY_APP_NAME}, null, null, null, null, null); } /** 更新APPInfo*/ public void updateAppName(AppBean bean){ ContentValues contentValues = new ContentValues(); contentValues.put(KEY_APP_TYPE, bean.getType()); mSQLiteDatabase.update(DB_TABLE_APP_INFO, contentValues, KEY_APP_NAME + "=" + "'" + bean.getAppName() + "'", null); } /** 根据Type查询APPInfo*/ public List<AppBean> fetchAppBean(String type){ List<AppBean> appBeans = new ArrayList<AppBean>(); Cursor cursor = null; cursor = mSQLiteDatabase.query(DB_TABLE_APP_INFO, new String[]{KEY_ID,KEY_APP_NAME}, KEY_APP_TYPE + "=" + "'" + type + "'", null, null, null, null); if(cursor != null){ try { while (cursor.moveToNext()) { AppBean appBean = new AppBean(); appBean.setAppName(cursor.getString(cursor.getColumnIndex(KEY_APP_NAME))); appBeans.add(appBean); } } finally { cursor.close();// 关闭结果集 } } return appBeans; } /**查找APP信息*/ public List<AppBean> fetchAppBeans(){ List<AppBean> appBeans = new ArrayList<AppBean>(); Cursor cursor = null; cursor = mSQLiteDatabase.query(DB_TABLE_APP_INFO, new String[]{KEY_ID,KEY_APP_NAME}, null, null, null, null, null); if(cursor != null){ try { while (cursor.moveToNext()) { AppBean appBean = new AppBean(); appBean.setAppName(cursor.getString(cursor.getColumnIndex(KEY_APP_NAME))); appBeans.add(appBean); } } finally { cursor.close();// 关闭结果集 } } return appBeans; } /**插入用户个人信息*/ public boolean insertUserInfo(WeiboBean weiboBean){ boolean flag; long RecNo = 0; ContentValues contentValues = new ContentValues(); mSQLiteDatabase.beginTransaction(); contentValues.put(KEY_USER_NAME, weiboBean.getName()); contentValues.put(KEY_USER_PHOTO, weiboBean.getPhoto()); contentValues.put(KEY_USER_DESCRIPTION, weiboBean.getDescription()); RecNo = mSQLiteDatabase.insert(DB_TABLE_USER_INFO, KEY_ID, contentValues); mSQLiteDatabase.setTransactionSuccessful(); mSQLiteDatabase.endTransaction(); if(RecNo >= 0){ flag = true; }else{ flag = false; } return flag; } /**用户个人信息*/ public WeiboBean queryUserInfo(){ Cursor cursor = mSQLiteDatabase.query(DB_TABLE_USER_INFO, new String[]{KEY_ID,KEY_USER_NAME,KEY_USER_PHOTO,KEY_USER_DESCRIPTION}, null, null, null, null, null); WeiboBean weiboBean = new WeiboBean();; if(cursor != null){ try { while (cursor.moveToNext()) { weiboBean.setName(cursor.getString(cursor.getColumnIndex(KEY_USER_NAME))); weiboBean.setPhoto(cursor.getString(cursor.getColumnIndex(KEY_USER_PHOTO))); weiboBean.setDescription(cursor.getString(cursor.getColumnIndex(KEY_USER_DESCRIPTION))); } } finally { cursor.close();// 关闭结果集 } } return weiboBean; } /**插入好友信息*/ public boolean insertFriendInfo(List<FriendBean> friendBeans){ boolean flag; long RecNo = 0; ContentValues contentValues = new ContentValues(); mSQLiteDatabase.beginTransaction(); for(int i=0;i<friendBeans.size();i++){ contentValues.put(KEY_FRIEND_NAME, friendBeans.get(i).getName()); contentValues.put(KEY_FRIEND_PHOTO, friendBeans.get(i).getPhoto()); contentValues.put(KEY_FRIEND_DESCRIPTION, friendBeans.get(i).getDescription()); RecNo = mSQLiteDatabase.insert(DB_TABLE_FRIEND_INFO, KEY_ID, contentValues); contentValues.clear(); } if(RecNo >= 0){ flag = true; }else { flag = false; } return flag; } public void deleteUserIno(){ mSQLiteDatabase.delete(DB_TABLE_USER_INFO, null, null); } /**查找好友信息*/ public List<FriendBean> queryFriendInfo(){ List<FriendBean> friendBeans = new ArrayList<FriendBean>(); Cursor cursor = mSQLiteDatabase.query(DB_TABLE_FRIEND_INFO, new String[]{KEY_ID,KEY_FRIEND_NAME,KEY_FRIEND_PHOTO,KEY_FRIEND_DESCRIPTION}, null, null, null, null, null); if(cursor != null){ try { while (cursor.moveToNext()) { FriendBean friendBean = new FriendBean(); friendBean.setName(cursor.getString(cursor.getColumnIndex(KEY_USER_NAME))); friendBean.setPhoto(cursor.getString(cursor.getColumnIndex(KEY_USER_PHOTO))); friendBean.setDescription(cursor.getString(cursor.getColumnIndex(KEY_USER_DESCRIPTION))); friendBeans.add(friendBean); } } finally { cursor.close();// 关闭结果集 } } return friendBeans; } }