博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

Posted on 2013-10-16 13:21  xuty@blog  阅读(1138)  评论(0)    收藏  举报

public Object createTable(){
    //打开或创建test.db数据库
      db = context.openOrCreateDatabase("symptom.db", Context.MODE_PRIVATE, null);
      db.execSQL("DROP TABLE IF EXISTS zzk");
    //创建person表
     db.execSQL("CREATE TABLE zzk (FATHER varchar2(4), CHILD varchar2(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");
 
     Cursor c = db.rawQuery("SELECT * FROM zzk", null);

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

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

   return c;
}

public void update(String table,String father,String child){
    ContentValues cv = new ContentValues();
    cv.put("FATHER",father);
    cv.put("CHILD",child);
    db.insert(table, null, cv);
}

 

其他参考资料:

SQLiteDatabase的介绍

http://liangruijun.blog.51cto.com/3061169/663686

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

SQLiteDatabase的常用方法 

 

方法名称

方法描述

openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory)

打开或创建数据库

insert(String table,String nullColumnHack,ContentValues values)

添加一条记录

delete(String table,String whereClause,String[] whereArgs)

删除一条记录

query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy)

查询一条记录

update(String table,ContentValues values,String whereClause,String[] whereArgs)

修改记录

execSQL(String sql)

执行一条SQL语句

close()

关闭数据库

 

1、打开或者创建数据库

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

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

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

2、创建表

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

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

  1. private void createTable(SQLiteDatabase db){  
  2.    
  3.       //创建表SQL语句  
  4.       String stu_table="create table usertable(_id integer primary key autoincrement,sname text,snumber text)";  
  5.    
  6.       //执行SQL语句   
  7.       db.execSQL(stu_table);  
  8. }  

3、插入数据

插入数据有两种方法:

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

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

第一种方法的代码:

  1. private void insert(SQLiteDatabase db) {  
  2.    
  3.     //实例化常量值  
  4.     ContentValues cValue = new ContentValues();  
  5.    
  6.     //添加用户名  
  7.     cValue.put("sname","xiaoming");  
  8.    
  9.     //添加密码  
  10.     cValue.put("snumber","01005");  
  11.    
  12.     //调用insert()方法插入数据  
  13.     db.insert("stu_table",null,cValue);  
  14. }  

第二种方法的代码:

  1. private void insert(SQLiteDatabase db){   
  2.  
  3.      //插入数据SQL语句  
  4.      String stu_sql="insert into stu_table(sname,snumber) values('xiaoming','01005')";  
  5.    
  6.     //执行SQL语句  
  7.      db.execSQL(sql);  
  8. }  

4、删除数据

删除数据也有两种方法:

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

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

第一种方法的代码:

  1. private void delete(SQLiteDatabase db) {  
  2.    
  3.    //删除条件  
  4.    String whereClause = "_id=?";  
  5.    
  6.    //删除条件参数  
  7.    String[] whereArgs = {String.valueOf(2)};  
  8.    
  9.    //执行删除  
  10.    db.delete("stu_table",whereClause,whereArgs);   
  11. }  

第二种方法的代码:

  1. private void delete(SQLiteDatabase db) {  
  2.    
  3.    //删除SQL语句  
  4.    String sql = "delete from stu_table where _id  = 6";  
  5.    
  6.    //执行SQL语句  
  7.    db.execSQL(sql);  
  8. }  

5、修改数据

修改数据有两种方法:

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

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

第一种方法的代码:

  1. private void update(SQLiteDatabase db) {  
  2.    
  3.     //实例化内容值  
  4.     ContentValues values = new ContentValues();  
  5.    
  6.     //在values中添加内容   
  7.     values.put("snumber","101003");  
  8.    
  9.     //修改条件   
  10.     String whereClause = "id=?";  
  11.    
  12.     //修改添加参数  
  13.     String[] whereArgs={String.valuesOf(1)};  
  14.    
  15.     //修改  
  16.     db.update("usertable",values,whereClause,whereArgs);   
  17. }  

第二种方法的代码:

  1. private void update(SQLiteDatabase db){  
  2.    
  3.     //修改SQL语句  
  4.     String sql = "update stu_table set snumber = 654321 where id = 1";  
  5.    
  6.     //执行SQL  
  7.     db.execSQL(sql);   
  8. }  
 

6、查询数据

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

public Cursor query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit);

各个参数的意义说明:

①table:表名称

②columns:列名称数组

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

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

⑤groupBy:分组列

⑥having:分组条件

⑦orderBy:排序列

⑧limit:分页查询限制

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

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

Cursor游标常用方法

 

方法名称

方法描述

getCount()

获得总的数据项数

isFirst()

判断是否第一条记录

isLast()

判断是否最后一条记录

moveToFirst()

移动到第一条记录

moveToLast()

移动到最后一条记录

move(int offset)

移动到指定记录

moveToNext()

移动到下一条记录

moveToPrevious()

移动到上一条记录

getColumnIndexOrThrow(String columnName)

根据列名称获得列索引

getInt(int columnIndex)

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

getString(int columnIndex)

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

 

 

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

  1. private void query(SQLiteDatabase db)  
  2. {  
  3.    
  4.    //查询获得游标  
  5.    Cursor cursor = db.query   ("usertable",null,null,null,null,null,null);  
  6.    
  7.    //判断游标是否为空  
  8.    if(cursor.moveToFirst() {  
  9.    
  10.        //遍历游标  
  11.        for(int i=0;i<cursor.getCount();i++){  
  12.    
  13.             cursor.move(i);  
  14.  
  15.             //获得ID  
  16.             int id = cursor.getInt(0);  
  17.    
  18.             //获得用户名  
  19.             String username=cursor.getString(1);  
  20.    
  21.             //获得密码  
  22.             String password=cursor.getString(2);  
  23.    
  24.             //输出用户信息  
  25.             System.out.println(id+":"+sname+":"+snumber);  
  26.        }  
  27.    }   
  28. }  

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

    1. private void drop(SQLiteDatabase db){          
    2.      //删除表的SQL语句        
    3.      String sql ="DROP TABLE stu_table";           
    4.     //执行SQL       
    5.     db.execSQL(sql);     
    6. }