您的位置:首页 > 数据库

SQLiteDataBase 新建数据库表并查询的demo

2013-10-16 13:21 281 查看
publicObjectcreateTable(){
//打开或创建test.db数据库
db=context.openOrCreateDatabase("symptom.db",Context.MODE_PRIVATE,null);
db.execSQL("DROPTABLEIFEXISTSzzk");
//创建person表
db.execSQL("CREATETABLEzzk(FATHERvarchar2(4),CHILDvarchar2(4))");

//插入数据
update("zzk","a","a1");
update("zzk","a","a2");
update("zzk","a","a3");
update("zzk","a","a4");
update("zzk","b","b1");
update("zzk","b","b2");
update("zzk","b","b3");
update("zzk","b","b4");
update("zzk","b","b5");

Cursorc=db.rawQuery("SELECT*FROMzzk",null);

Log.d("cursor",Integer.toString(c.getCount()));
while(c.moveToNext()){

Log.d("testcursor","test");
}

returnc;
}

publicvoidupdate(Stringtable,Stringfather,Stringchild){
ContentValuescv=newContentValues();
cv.put("FATHER",father);
cv.put("CHILD",child);
db.insert(table,null,cv);
}

其他参考资料:

SQLiteDatabase的介绍

/article/4132160.html

Android提供了创建和是用SQLite数据库的API。SQLiteDatabase代表一个数据库对象,提供了操作数据库的一些方法。在Android的SDK目录下有sqlite3工具,我们可以利用它创建数据库、创建表和执行一些SQL语句。下面是SQLiteDatabase的常用方法。

SQLiteDatabase的常用方法

方法名称

方法描述

openOrCreateDatabase(Stringpath,SQLiteDatabase.CursorFactoryfactory)

打开或创建数据库

insert(Stringtable,StringnullColumnHack,ContentValuesvalues)

添加一条记录

delete(Stringtable,StringwhereClause,String[]whereArgs)

删除一条记录

query(Stringtable,String[]columns,Stringselection,String[]selectionArgs,StringgroupBy,Stringhaving,StringorderBy)

查询一条记录

update(Stringtable,ContentValuesvalues,StringwhereClause,String[]whereArgs)

修改记录

execSQL(Stringsql)

执行一条SQL语句

close()

关闭数据库

1、打开或者创建数据库

在Android中以使用SQLiteDatabase的静态方法openOrCreateDatabase(Stringpath,SQLiteDatabae.CursorFactoryfactory)打开或者创建一个数据库。它会自动去检测是否存在这个数据库,如果存在则打开,不存在则创建一个数据库;创建成功则返回一个SQLiteDatabase对象,否则抛出异常FileNotFoundException。

下面是创建名为“stu.db”数据库的代码:

db=SQLiteDatabase.openOrCreateDatabase("/data/data/com.lingdududu.db/databases/stu.db",null);

2、创建表

创建一张表很简单。首先,编写创建表的SQL语句,然后,调用SQLiteDatabase的execSQL()方法来执行SQL语句便可以创建一张表了。

下面的代码创建了一张用户表,属性列为:_id(主键并且自动增加)、sname(学生姓名)、snumber(学号)

privatevoidcreateTable(SQLiteDatabasedb){

//创建表SQL语句

Stringstu_table="createtableusertable(_idintegerprimarykeyautoincrement,snametext,snumbertext)";

//执行SQL语句

db.execSQL(stu_table);

}

3、插入数据

插入数据有两种方法:

①SQLiteDatabase的insert(Stringtable,StringnullColumnHack,ContentValuesvalues)方法,参数一是表名称,参数二是空列的默认值,参数三是ContentValues类型的一个封装了列名称和列值的Map;

②编写插入数据的SQL语句,直接调用SQLiteDatabase的execSQL()方法来执行

第一种方法的代码:

privatevoidinsert(SQLiteDatabasedb){

//实例化常量值

ContentValuescValue=newContentValues();

//添加用户名

cValue.put("sname","xiaoming");

//添加密码

cValue.put("snumber","01005");

//调用insert()方法插入数据

db.insert("stu_table",null,cValue);

}

第二种方法的代码:

privatevoidinsert(SQLiteDatabasedb){

//插入数据SQL语句

Stringstu_sql="insertintostu_table(sname,snumber)values('xiaoming','01005')";

//执行SQL语句

db.execSQL(sql);

}

4、删除数据

删除数据也有两种方法:

①调用SQLiteDatabase的delete(Stringtable,StringwhereClause,String[]whereArgs)方法,参数一是表名称,参数二是删除条件,参数三是删除条件值数组;

②编写删除SQL语句,调用SQLiteDatabase的execSQL()方法来执行删除。

第一种方法的代码:

privatevoiddelete(SQLiteDatabasedb){

//删除条件

StringwhereClause="_id=?";

//删除条件参数

String[]whereArgs={String.valueOf(2)};

//执行删除

db.delete("stu_table",whereClause,whereArgs);

}

第二种方法的代码:

privatevoiddelete(SQLiteDatabasedb){

//删除SQL语句

Stringsql="deletefromstu_tablewhere_id=6";

//执行SQL语句

db.execSQL(sql);

}

5、修改数据

修改数据有两种方法:

①调用SQLiteDatabase的update(Stringtable,ContentValuesvalues,StringwhereClause,String[]whereArgs)方法。参数是表名称,参数是更行列ContentValues类型的键值对(Map),参数是更新条件(where字句),参数是更新条件数组。

②编写更新的SQL语句,调用SQLiteDatabase的execSQL执行更新。

第一种方法的代码:

privatevoidupdate(SQLiteDatabasedb){

//实例化内容值

ContentValuesvalues=newContentValues();

//在values中添加内容

values.put("snumber","101003");

//修改条件

StringwhereClause="id=?";

//修改添加参数

String[]whereArgs={String.valuesOf(1)};

//修改

db.update("usertable",values,whereClause,whereArgs);

}

第二种方法的代码:

privatevoidupdate(SQLiteDatabasedb){

//修改SQL语句

Stringsql="updatestu_tablesetsnumber=654321whereid=1";

//执行SQL

db.execSQL(sql);

}


6、查询数据

在Android中查询数据是通过Cursor类来实现的,当我们使用SQLiteDatabase.query()方法时,会得到一个Cursor对象,Cursor指向的就是每一条数据。它提供了很多有关查询的方法,具体方法如下:

publicCursorquery(Stringtable,String[]columns,Stringselection,String[]selectionArgs,StringgroupBy,Stringhaving,StringorderBy,Stringlimit);

各个参数的意义说明:

①table:表名称

②columns:列名称数组

③selection:条件字句,相当于where

④selectionArgs:条件字句,参数数组

⑤groupBy:分组列

⑥having:分组条件

⑦orderBy:排序列

⑧limit:分页查询限制

⑨Cursor:返回值,相当于结果集ResultSet

Cursor是一个游标接口,提供了遍历查询结果的方法,如移动指针方法move(),获得列值方法getString()等.

Cursor游标常用方法

方法名称

方法描述

getCount()

获得总的数据项数

isFirst()

判断是否第一条记录

isLast()

判断是否最后一条记录

moveToFirst()

移动到第一条记录

moveToLast()

移动到最后一条记录

move(intoffset)

移动到指定记录

moveToNext()

移动到下一条记录

moveToPrevious()

移动到上一条记录

getColumnIndexOrThrow(StringcolumnName)

根据列名称获得列索引

getInt(intcolumnIndex)

获得指定列索引的int类型值

getString(intcolumnIndex)

获得指定列缩影的String类型值

下面就是用Cursor来查询数据库中的数据,具体代码如下:

privatevoidquery(SQLiteDatabasedb)

{

//查询获得游标

Cursorcursor=db.query("usertable",null,null,null,null,null,null);

//判断游标是否为空

if(cursor.moveToFirst(){

//遍历游标

for(inti=0;i<cursor.getCount();i++){

cursor.move(i);

//获得ID

intid=cursor.getInt(0);

//获得用户名

Stringusername=cursor.getString(1);

//获得密码

Stringpassword=cursor.getString(2);

//输出用户信息

System.out.println(id+":"+sname+":"+snumber);

}

}

}

7、删除指定表
编写插入数据的SQL语句,直接调用SQLiteDatabase的execSQL()方法来执行

privatevoiddrop(SQLiteDatabasedb){

//删除表的SQL语句

Stringsql="DROPTABLEstu_table";

//执行SQL

db.execSQL(sql);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: