• SQLite 在 Android 开发中的简单应用演示

    简单写一个SQLite使用场景
    服务器君一共花费 18.621 ms 进行了 4 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    前面我们简单了解了一下 SQLite 数据库,现在我们来看看怎么在 Android 开发中去使用它。现在的主流移动设备像Android、iPhone等都使用SQLite作为复杂数据的存储引擎,在我们为移动设备开发应用程序时,也许就要使用到SQLite来存储我们大量的数据,所以我们就需要掌握移动设备上的SQLite开发技巧。对于Android平台来说,系统内置了丰富的API来供开发人员操作 SQLite,我们可以轻松的完成对数据的存取。

    1. 创建一个 User 类

    我们的数据表是 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;
        }  
    }
    

    2. 在 Activity 或 Fragment 中使用 SQLite

    为了方便,我将代码写在了 onCreate 中。

    package net.nowamagic.fragment;
    
    import butterknife.ButterKnife;
    import butterknife.InjectView;
    import butterknife.OnClick;
    import android.app.Fragment;
    import android.content.ContentValues;
    import android.content.Context;
    import android.content.Intent;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    import net.nowamagic.magicapp_v17.R;
    import net.nowamagic.magicapp_v17.TestActivity;
    
    import net.nowamagic.test.User;
    
    public class BlogFragment extends Fragment {
    	
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		
    		//打开或创建nowamagic.db数据库
    		SQLiteDatabase db = getActivity().openOrCreateDatabase("nowamagic.db", Context.MODE_PRIVATE, null);
    		db.execSQL("DROP TABLE IF EXISTS user");
    		
    		//创建user表
    		db.execSQL("CREATE TABLE user (_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR, age SMALLINT)");
    		User user = new User();
    		
    		user.name = "Lurie";
    		user.age = 16;
    		
    		//插入数据  
            db.execSQL("INSERT INTO user VALUES (NULL, ?, ?)", new Object[]{user.name, user.age});
    		
            user.name = "Eleonora";
            user.age = 17;
            //ContentValues以键值对的形式存放数据  
            ContentValues cv = new ContentValues();
            
            cv.put("name", user.name);
            cv.put("age", user.age);
            
            //插入ContentValues中的数据  
            db.insert("user", null, cv);
            
            //更新数据  
            //db.update("user", cv, "name = ?", new String[]{"john"});  
            
            Cursor c = db.rawQuery("SELECT * FROM user WHERE age >= ?", new String[]{"16"});
            while (c.moveToNext()) {
                int _id = c.getInt(c.getColumnIndex("_id"));
                String name = c.getString(c.getColumnIndex("name"));
                int age = c.getInt(c.getColumnIndex("age"));
                Log.i("db", "_id=>" + _id + ", name=>" + name + ", age=>" + age);
            }  
            c.close();
            
            //删除数据  
            //db.delete("user", "age < ?", new String[]{"35"});  
            
            //关闭当前数据库  
            db.close();
            
            //删除test.db数据库  
            //deleteDatabase("nowamagic.db");  
    	}
    
    	@Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    		View view = inflater.inflate(R.layout.test, container, false);
    		ButterKnife.inject(this, view);
    		return view;
        }
    
    }
    

    在 Activity 中,可以直接使用 openOrCreateDatabase(),而在 Fragment 中,则要使用getActivity().openOrCreateDatabase()。

    在执行完上面的代码后,我们看一下 log。

    同时,系统就会在/data/data/[PACKAGE_NAME]/databases目录下生成一个“nowamagic.db”的数据库文件,如图:

    有一点需要说明一下,data/data这个目录是需要root权限的,就是说,如果你用真机做测试,请先获得 ROOT 权限。如何获得?可以参考一下 获取Android系统的ROOT权限

    我们在 SQLite Expert 中再看一下这个数据表。

    OK,初略是成功了,后面我们再慢慢介绍 SQLite 使用的更多细节。

更多 推荐条目

Welcome to NowaMagic Academy!

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

本章最新发布
随机专题
  1. [PHP程序设计] PHP与函数式编程 1 个条目
  2. [Python程序设计] Django模板系统 11 个条目
  3. [Python程序设计] Tornado 服务器环境配置 3 个条目
  4. [智力开发与知识管理] 整体性学习步骤 9 个条目
  5. [PHP程序设计] PHP数组的遍历 7 个条目
  6. [Python程序设计] 写几个简单的Tornado程序吧 5 个条目
  7. [移动开发] Android Studio的使用技巧 4 个条目
  8. [PHP程序设计] PHP数组探索 4 个条目
  9. [移动开发] 刷机与root相关 2 个条目
  10. [Python程序设计] urls.py设置技巧 8 个条目
  11. [移动开发] Android属性系统Property 9 个条目
  12. [移动开发] 使用support-v7 ActionBar前的那些坑 3 个条目
窗口 -- [博客]