android数据库的基本简单操作

接着上一次,本次完成android数据库的简单操作


添加数据:

上一节已经知道调用SQliteOPenHelpergetReadableDatabase()或getWritableDatabase()方法可以用来创建和升级一个数据库,而且这两个方法都会返回一个SQLiteDataBase对象,借助这个对象可以完成对数据库的操作。

具体步骤:

SqliteDateBase提供了一个方法inset(参数一, 参数二, 参数三)其有三个参数,第一个参数:为表名(想要操作的表), 第二个参数:用于在为未指定添加数据的情况下给某些克为空的列自动赋值为空, 一般为null, 第三个参数:是一个Contentvalues对象,其提供了一系列的put ()方法用于向ContentValues中添加数据,只需将列表中的列以及相对应的数据传入即可。

具体代码如下:

这里我插入了两组数据:

SQLiteDatabase db = databaseHelper.getWritableDatabase(); // 打开数据库

ContentValues values = new ContentValues();

values.put(MyDatabaseHelper.NAME"疯狂java");

values.put(MyDatabaseHelper.AUTHOR"李刚");

values.put(MyDatabaseHelper.PRICE, 100);

db.insert(MyDatabaseHelper.TABLE_NAMEnull, values);

// 插入第二条数据

values.put(MyDatabaseHelper.NAME"疯狂android讲义");

values.put(MyDatabaseHelper.AUTHOR"李刚");

values.put(MyDatabaseHelper.PRICE, 98);

db.insert(MyDatabaseHelper.TABLE_NAMEnull, values);

---------------------------------------------------------

查询数据:

SQliteDatabase提供了一个Query()方法用于对数据进行查询,这个方法有点小复杂,最短的重载也需要传入七个参数,下面解释所有参数, 第一个参数:表名, 第二个参数:指定查询的列,(若不指定则查询所有的列),第三第四个参数用于用于约束查询某一行或某几行的数据,不指定则默认为查询所有行的数据,第五个参数用于指定需要去group by 的列, 不指定则表示不对数据进行group by 操作,第六个参数用于对group by 后的数据进行过滤,不指定则不过滤, 第七个参数:指定查询结果的排序方式,不指定则为默认的排序方式。 

调用Query方法会返回一个cursor对象,查询到的所有数据都将从这个对象中提取。

Cursor 类里也提供了几个方法用于对行数据进行操作

moveTofirst();将游标移至第一行如果为空则返回null

moveTonext();将游标移至下一行如果为空则返回null

getColumnIndex():获取某一列在表中对应位置的索引。

代码如下:

private void Select() {

SQLiteDatabase database = databaseHelper.getWritableDatabase();

Cursor cursor = database.query(MyDatabaseHelper.TABLE_NAMEnullnull,

nullnullnullnull);

while (cursor.moveToNext() != false) {

String name = cursor.getString(cursor

.getColumnIndex(MyDatabaseHelper.NAME));

String author = cursor.getString(cursor

.getColumnIndex(MyDatabaseHelper.AUTHOR));

String price = cursor.getString(cursor

.getColumnIndex(MyDatabaseHelper.PRICE));

Log.d("the name of the book is----> ", name);

Log.d("the name of the book is----> ", author);

Log.d("the name of the book is----> ", price);

}

}

---------------------------------------------------------

 删除数据:

SQLiteDatabase中提供了一个delete方法专门用于数据删除,此方法有三个参数,第一个参数仍然是表名,第二个参数,第三个参数用于约束删除某一行或几行的数据,如果不指定的还就删除所有行。

部分代码如下:

private void delete() {

sqLiteDatabase = databaseHelper.getWritableDatabase();

sqLiteDatabase.delete(MyDatabaseHelper.TABLE_NAME"name = ?",

new String[] { "疯狂java" });

Toast.makeText(this"done!!!", 2000).show();

}

----------------------------------------------------------------------------------------------------------------------------

升级数据库:

在创建数据库时我们实现了SQLiteOpenHelper其中有一个方法没有使用,onUpgrade(),该方法用于对数据库升级。目前在book.db中已经存在一张表,接下来再添加一张表,

有如下属性:

public static final String TABLE_NAMETWO = "categroy";

public static final String CID = "_cid";

public static final String CATEGROY_NAME = "categroy_name";

public static final String CATEGROY_CODE = "categroy_code";

创建如下:

public void onCreate(SQLiteDatabase db) {

db.execSQL("CREATE TABLE " + TABLE_NAME + "(" + ID

" INTEGER PRIMARY KEY AUTOINCREMENT," + NAME

" TEXT NOT NULL, " + AUTHOR + " TEXT NOT NULL," + PRICE

" TEXT NOT NULL )");

db.execSQL("CREATE TABLE " + TABLE_NAMETWO + "(" + CID

" INTEGER PRIMARY KEY AUTOINCREMENT," + CATEGROY_NAME

" TEXT NOT NULL," + CATEGROY_CODE + " TEXT NOT NULL)");

Toast.makeText(mcontext"Done!!", Toast.LENGTH_SHORT).show();

}

 

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

db.execSQL("DROP TABLE IF EXISTS book");

db.execSQL("DROP TABLE IF EXISTS categroy ");

onCreate(db);

}

如果不使用该方法category表是不会创建成功的,因为books.db已经存在,之后将不会重复创建的,因此OnCreate()方法将不会执行

对于 onUpgrade ()方法中执行两条drop语句,判断存在任何一张表,就将原先的删除,重新创建。

然后在onCreate()方法中将原来的参数该为大于1的值即可。

new MyDatabaseHelper(this"books.db"null, 2);

SQLite可视化工具查看如下:

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值