频道栏目
首页 > 程序开发 > 移动开发 > Android > 正文
android database sqlite的使用
2011-09-16 11:46:59           
收藏   我要投稿

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

自己实现个


view plaincopy to clipboardprint?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); 
    } 
 

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);
 }

}

 

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

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


view plaincopy to clipboardprint?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(); 
    } 
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 plaincopy to clipboardprint?上面的类不完整哦。。。直接复制就木有用的。。。。 
上面的类不完整哦。。。直接复制就木有用的。。。。

 

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

view plaincopy to clipboardprint?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(); 
                    } 
            } 
        }); 
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();
     }
   }
  });

 


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

作者“crazycharming的专栏”

点击复制链接 与好友分享!回本站首页
上一篇:android中LayoutInflater的使用
下一篇:Android清空ListView 的Item方法
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站