SQLite数据库简单应用

  SQLite,是一款轻型的数据库,在安卓手机中自带,SQLite库可以解析大部分标准SQL语言,下面记录简单的使用情况,如有哪位仁兄路过发现有错误,请帮我指出,以便我改正。下面是一个简单的例子,主要是方便与自己学习记忆。

    1.首先建一个工具类DBHelper 继承SQLiteOpenHelper 类。定义DBHelper构造器和重载onCreate()和onUpdgrade()方法。

  onCreate():用于创建数据库使用;

  onUpdgrade():用于更新数据库使用;

 1 public class DBHelper extends SQLiteOpenHelper {
 2 
 3     //构造器,参数super(上下文,数据库名称,游标工厂,数据库版本)
 4     public DBHelper(Context context) {
 5         super(context, Constant.DB_NAME, null, Constant.VERSION);
 6     }
 7 
 8     @Override
 9     public void onCreate(SQLiteDatabase db) {
10         db.execSQL("CREATE table IF NOT EXISTS '"+Constant.USER_TABLE+"'"
11                 + " (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, img TEXT)");
12     }
13 
14     @Override
15     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
16 
17     }
18 }

  2.建一个常量类(非必须,可选)Constant,用来存放一些相关的常量,如数据库的名字,版本号等:

1 public class Constant {
2     public static final String DB_NAME = "uu.db";//数据库名称
3     public static final int  VERSION = 1;//数据库版本
4     public static final String USER_TABLE = "user";//用户数据表名称
5 }

  3.实现对数据表的映射,即Bean类(如果我没记错),用于构造User 对象。

 1 public class User {
 2     private Long id;
 3     private String name;
 4     private String img;
 5 
 6     public Long getId() {
 7         return id;
 8     }
 9 
10     public void setId(Long id) {
11         this.id = id;
12     }
13 
14     public String getName() {
15         return name;
16     }
17 
18     public void setName(String name) {
19         this.name = name;
20     }
21 
22     public String getImg() {
23         return img;
24     }
25 
26     public void setImg(String img) {
27         this.img = img;
28     }
29 
30     @Override
31     public String toString() {
32         return "User{" +
33                 "id=" + id +
34                 ", name='" + name + '\'' +
35                 ", img='" + img + '\'' +
36                 '}';
37     }
38 }

  4.建立Dao类,即对用户表(user)完成增、删、改、查操作的额方法,其他类在根据需要直接调用方法即可。

/**
 * Created by Administrator on 2015/8/1.
 * 用于实现增删改查操作
 */
public class UserDao {

    private DBHelper dbHelper = null;
    private SQLiteDatabase db = null;
    private ContentValues values = null;

    public  UserDao(Context context){
        dbHelper = new DBHelper(context);
    }
    /**
     * 增加一个用户
     * @param user
     * @return
     */
    public long addUser(User user){
        //获取SQLiteDatabase进行数据库操作,打开写操作
        db = dbHelper.getWritableDatabase();
        //参数绑定对象
        values = new ContentValues();

        values.put("name",user.getName());
        values.put("img", user.getImg());

        //存储操作,在此返回的iD并不是实际的ID,只是该记录所在的行号,若从未删除则是正确的
        long id = db.insert(Constant.USER_TABLE,null,values);
        //释放资源
        dbHelper.close();
        return id;

//        String sql = "insert into user(name,img) values('"+name+"','"+img+"')";
//        SQLiteDatabase db = dbHelper.getWritableDatabase();
//        db.execSQL(sql);
    }

    /**
     *根据ID删除一个用户
     * @param id
     * @return
     */
    public void  deleteUser(String id){
        db = dbHelper.getWritableDatabase();
        db.delete(Constant.USER_TABLE,"_id= "+id,null);
        db.close();
    }

    /**
     * 更新一个对象
     * @param user
     * @return
     */
    public int updateUser(User user){
        db = dbHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("name",user.getName());
        values.put("img",user.getImg());

        int k= db.update(Constant.USER_TABLE,values,"_id="+user.getId(),null);
        db.close();
        return k;
    }

    /**
     * 根据ID查询用户信息
     * @param uesr_id
     * @return
     */
    public User findUserByUserId(String uesr_id){
        return null;
    }

    /**
     * 获取所有用户
     * @return
     */
    public List<User> findAllUsers(){
        db = dbHelper.getReadableDatabase();

        String sql = "select _id,name,img from "
                + Constant.USER_TABLE + " order by _id desc";
        Cursor cursor = db.rawQuery(sql, null);
        List<User> list = new ArrayList<User>();
        //用下面的效果较好,但是要先判断是否有数据。然后数组开辟一定的空间,由cursor.getCount()定
        //List<User> list = new ArrayList<User>(cursor.getCount());
        while (cursor.moveToNext()) {
            User user = new User();

            user.setId(cursor.getLong(0));
            user.setName(cursor.getString(1));
            user.setImg(cursor.getString(2));

            list.add(user);
        }
        cursor.close();//关闭游标
        db.close();
        return list;
    }
}

 

posted @ 2015-08-01 21:31  黄海-1991  阅读(291)  评论(0编辑  收藏  举报