SqlLite的案例学习-----看代码学习

因为现在本人技术实在是太菜,不能快速写出高质量有效的代码,我打算现从看,分析别人的代码开始学习。今天就开始我们的第一个案例,关于SQlite的学习把
代码出处:www.oschina.net/question/195301_30828






package com.android.tutor;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class BooksDB extends SQLiteOpenHelper {
private final static String DATABASE_NAME = "BOOKS.db";        //这些固定的字符串都申明为final static  为什么?
private final static int DATABASE_VERSION = 1;                //final  可以防止字符串被修改 ,这也算是保证了安全了吧。
private final static String TABLE_NAME = "books_table";        //static 申明的全局变量只能在本文件中使用,即使是extends该类的子类也不能使用该变量。
public final static String BOOK_ID = "book_id";
public final static String BOOK_NAME = "book_name";
public final static String BOOK_AUTHOR = "book_author";
 
public BooksDB(Context context) {
// TODO Auto-generated constructor stub
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
//创建table
@Override
public void onCreate(SQLiteDatabase db) {           //onCreate()方法是必须实现的方法,如果当前没有创建目标数据库,则首次调用的时候会自动创建该数据库
String sql = "CREATE TABLE " + TABLE_NAME + " (" + BOOK_ID
+ " INTEGER primary key autoincrement, " + BOOK_NAME + " text, "+ BOOK_AUTHOR +" text);";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {   
 String sql = "DROP TABLE IF EXISTS " + TABLE_NAME;
db.execSQL(sql);
onCreate(db);
}
 
public Cursor select() {                      //Cursor 是什么东西?游标?有什么作用呢?参考这个吧www.cnblogs.com/TerryBlog/archive/2010/07/05/1771459.html 但还是不懂。
 SQLiteDatabase db = this.getReadableDatabase(); //暂且这样理解把,Cursor是有key的容器,通过这个key可以找到对应的值。(汗,自己太笨,理解不来这么高大上的东西)
Cursor cursor = db                                          //看,此时的db是getReableDatabase(),变成只读的,这也可以保证它的安全是吧。
.query(TABLE_NAME, null, null, null, null, null, null);
return cursor;
}
//增加操作
public long insert(String bookname,String author)
{
SQLiteDatabase db = this.getWritableDatabase();   //
/* ContentValues */
ContentValues cv = new ContentValues();
cv.put(BOOK_NAME, bookname);
cv.put(BOOK_AUTHOR, author);
long row = db.insert(TABLE_NAME, null, cv);
return row;
}
//删除操作
public void delete(int id)
{
SQLiteDatabase db = this.getWritableDatabase();
String where = BOOK_ID + " = ?";
String[] whereValue ={ Integer.toString(id) };
db.delete(TABLE_NAME, where, whereValue);
}
//修改操作
public void update(int id, String bookname,String author)
{
SQLiteDatabase db = this.getWritableDatabase();
String where = BOOK_ID + " = ?";
String[] whereValue = { Integer.toString(id) };
 
ContentValues cv = new ContentValues();                 //blog.csdn.net/lixiang0522/article/details/7564225,ContentValue是一个特殊的HaspMap。
cv.put(BOOK_NAME, bookname);
cv.put(BOOK_AUTHOR, author);
db.update(TABLE_NAME, cv, where, whereValue);
}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值