第一次搞这个。感觉未来在我眼前啊。。。以前易某某让我搞这个,现在感觉易某某说得对啊,好好搞起。---第一次,处啊。。有什么值得讨论的地方求兄弟们不要藏着,有什么不足求指点啊。。本包子很谦虚的。
最近刚学的android。基友们应该懂得。。求交友!求进步!
自我认识:sqlite是一个小型的关系型数据库,很精致,很有用。
先看代码吧:
/**
* SqlitePrc.java
* author : xxx
* Create on 2013-7-30 下午3:14:45
* @param
*
*/
package com.example.sqliteprc;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class SqlitePrc1 extends SQLiteOpenHelper
{
private final static String DATABASE_NAME="dailyBG_db"; //数据库名字
private final static int DATABASE_VERSION=1; //版本号
private final static String TABLE_NAME="stu_table";//表名
public final static String ID="stu_id";//表的字段 id
public final static String AGE="stu_age"; // 年龄
public static SQLiteDatabase sdb; //数据库对象
public SqlitePrc1(Context context) {//此构造函数必不可少啊。
super(context,DATABASE_NAME, null, DATABASE_VERSION);
sdb=this.getWritableDatabase(); //创建数据库并且赋给sdb对象
}
@Override
public void onCreate(SQLiteDatabase db) { //创建表(ID--年龄,共两个字段)就是个练习。。嘿嘿
String sql="CREATE TABLE IF NOT EXISTS "+TABLE_NAME+"("+ID+" INEGER primary key, "+AGE+" INTEGER)";
db.execSQL(sql);
sdb=db;
insert(1,258);
}
public long insert(int id,int age) //插入
{
ContentValues cv=new ContentValues();//contentvalues相当于map也是键值对。这很好理解了吧。
cv.put(AGE, age);
cv.put(ID, id);
/*
*参数:表名,(如果cv为空。则给字段赋值null),键值对,,,官方说明:
*may be null
. SQL doesn't allow inserting a completely empty row without naming at least one column name. If your provided values
is empty, no column names are *known and an empty row can't be inserted. If not set to null, the nullColumnHack
parameter provides the name of nullable column name to explicitly insert a NULL into in *the case where your values
is empty
*/
long row=sdb.insert(TABLE_NAME, null, cv);
return row;
}
public Cursor select() //查询
{//查询。。丫的参数太多了
Cursor cursor=sdb.query(TABLE_NAME, null, null, null, null, null, null);//参数说明1.表名,2列名,3查询条件,4,查询条件的值,5分组group by,6 order by 7limit
return cursor;
}
public int delete() //删除
{
return sdb.delete(TABLE_NAME,"id=?" ,new String[]{"11"});//参数说明 1:删除数据所在的表,2.删除数据的字段名和占位符,3删除字段的条件值。就是占位符的值
}
public int delete(ContentValues values) //更新
{
return sdb.update (TABLE_NAME, values, “id=?”, new String[]{"12"})//字段说明1:表明,2要修改的数据,3AND4.要修改的数据也就是条件
}
//当数据库版本升级时候调用此方法
@Override
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
// TODO Auto-generated method stub
}
}
个人观点:数据库是运行在后台。只是为了提供数据。所以没有必要写在activity里面。。直接在一个类里面写好所有的crud接口就OK了,方便调用。内聚也强大