• ContentValues在SQLite中的使用简例

    插入与更新
    服务器君一共花费 26.101 ms 进行了 4 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    ContentValues 广泛用在与 SQLite 数据库的配合上,这里我们简单地通过一个例子来看看它的使用。这个例子包含插入数据与更新数据这两个操作。

    1. TestDBActivity.java

    package net.nowamagic.magicapp_v17;
    import net.nowamagic.test.DBManager;
    import net.nowamagic.test.User;
    
    public class TestDBActivity extends Activity {
    	
    	private DBManager mgr;
    	private ListView listView;
    	
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		// TODO Auto-generated method stub
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.testdb2);
    		
    		listView = (ListView) findViewById(R.id.listView_db);
    		//初始化DBManager
            mgr = new DBManager(this);;
    	}
    	
    	@Override  
        protected void onDestroy() {
            super.onDestroy();
            //应用的最后一个Activity关闭时应释放DB
            mgr.closeDB();
        }
    	
    	public void insert(View view) {
    		User user = new User();  
            user.name = "Gonn";
            user.age = 99;
            user.info = "简明现代魔法";
            mgr.insertUser(user);
            query(view);
        }
    	
    	public void update(View view) {  
            User user = new User();  
            user.name = "Vorn";  
            user.age = 20;
            mgr.updateAge(user);
        }  
    	
    }
    

    2. User

    package net.nowamagic.test;
    
    public class User {
    	public int _id;  
        public String name;  
        public int age;  
        public String info;
        
        public User() {  
        }
        
        public User(String name, int age, String info) {  
            this.name = name;  
            this.age = age;  
            this.info = info;
        }  
    }
    

    3. DBManager

    package net.nowamagic.test;
    
    public class DBManager {
    	
    	private DBHelper helper;
        private SQLiteDatabase db;
        
        Context c;
          
        public DBManager(Context context) {
            helper = new DBHelper(context);
            //因为getWritableDatabase内部调用了mContext.openOrCreateDatabase(mName, 0, mFactory);  
            //所以要确保context已初始化,我们可以把实例化DBManager的步骤放在Activity的onCreate里  
            db = helper.getWritableDatabase();
            
            c = context;
        }  
        
        /**
         * update user's age 
         * @param user
         */  
        public void insertUser(User user) {
            ContentValues cv = new ContentValues();
            cv.put("age", user.age);
            cv.put("name", user.name);
            cv.put("info", user.info);
            long rowid = db.insert("user", null, cv);
            Toast.makeText(c, "已插入一条测试数据,id =" + rowid, Toast.LENGTH_SHORT).show();
        }
          
        /**
         * update user's age 
         * @param user
         */  
        public void updateAge(User user) {
            ContentValues cv = new ContentValues();
            cv.put("age", user.age);
            db.update("user", cv, "name = ?", new String[]{user.name});
        }
          
        /**
         * close database
         */
        public void closeDB() {
            db.close();
        }
    	
    }
    
    

    TestDBActivity 借助 DBManager 实现了数据的插入和更新。在 TestDBActivity 里,只需要实例化 User 类,给这个实例赋值,然后调用 DBManager 的相应方法即可。

    更新操作如下:

    db.update("user", cv, "name = ?", new String[]{user.name}); 在 TestDBActivity 里 user.name = "Vorn",匹配 name = Vorn 的字段,把 cv 更新进去。

    插入操作如下:

    在 TestDBActivity 里,把 user 的成员配置好,然后 db.insert("user", null, cv) 就好。

更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [Python程序设计] Django数据库模型 6 个条目
  2. [PHP程序设计] htaccess 设置技巧 6 个条目
  3. [移动开发] Android Studio里的Gradle 3 个条目
  4. [软件工程与项目管理] 呈现器的布局与绘制 11 个条目
  5. [移动开发] Android根基概念Context 8 个条目
  6. [智力开发与知识管理] 信息的类型与结构 9 个条目
  7. [Python程序设计] Python Web部署的背景知识 9 个条目
  8. [PHP程序设计] PHP数组探索 4 个条目
  9. [软件工程与项目管理] 开始使用Git 3 个条目
  10. [Python程序设计] Django架构流程分析 7 个条目
  11. [软件工程与项目管理] 浏览器与CSS渲染技巧 2 个条目
  12. [移动开发] Android属性系统Property 9 个条目
窗口 -- [博客]