• 使用SQLiteOpenHelper类对数据库简单操作


    实现数据库基本操作
           数据库创建的问题解决了,接下来就该使用数据库实现应用程序功能的时候了。基本的操作包括创建、读取、更新、删除,即我们通常说的CRUD(Create, Read, Update, Delete)。在实现这些操作的时候,我们会使用到两个比较重要的类SQLiteDatabase类和Cursor类。

             SQLiteDatabase类在上面已经接触过了,这个类是核心类,用于管理和操作SQLite数据库,几乎所有的数据库操作,最终都将由这个类完成。
    Cursor类主要用于保存查询返回的结果,提供随机读、写的功能,从这一点上来看,有点类似于ado中的Dataset。Cursor类非常重要,在数据库操作中,在UI中,经常会用到Cursor,所以大家一定要掌握Cursor 的用法。

            下面我们用实例来说明如何实现CRUD操作。首先,我们创建一个客户资料相关的数据存取类,在这个类中,我们实现基本的增删改查等操作,需要的话,大家可以自己添加其它的代码等等,这里我们只是演示数据库的基本操作。     

    一.当操作SQLite数据库时需要,需要得到一个SQLiteOpenHelper对象。但由于SQLiteOpenHelper是一个抽象类,需要自定义一个类来继承它。这样自定义类就实现了SQLiteOpenHelper中的所有方法。
    二.创建一个类并继承SQLiteOpenHelper,实现其中的方法。并在构造函数中调用基类的构造函数。


    [java]
    1.public class SqlLiteHelper extends SQLiteOpenHelper {  
    2.       private static final int VERSION =1;  
    3.       //TODO 实现基类的构造函数,四个参数的   
    4.       public SqlLiteHelper(Contextcontext , String DBname ,CursorFactory factory , int version)  
    5.       {  
    6.              super(context, DBname,factory, version);  
    7.       }  
    8.       //TODO 实现基类的构造函数,三个参数的   
    9.       public SqlLiteHelper(Context context, String DBname ,int version ) {  
    10.              this(context, DBname, null,version);  
    11.                
    12.       }  
    13.       //TODO 实现基类的构造函数,两个参数的   
    14.       public SqlLiteHelper(Contextcontext,String DBname) {  
    15.              this(context, DBname, null,VERSION);  
    16.                
    17.       }  
    18.         
    19.       //当创建数据库时执行   
    20.       @Override  
    21.       public void onCreate(SQLiteDatabasedb) {  
    22.              // TODO Auto-generatedmethod stub   
    23.              System.out.println("创建数据库");  
    24.              db.execSQL("Createtable user(id int , name varchar(20))");  
    25.       }  
    26.  
    27.       //当更新数据库版本时执行   
    28.       @Override  
    29.       public voidonUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
    30.              //TODO Auto-generated method stub   
    31.              System.out.println("修改数据库版本号");  
    32.       }  
    33.} 
    三.创建数据库


    [java]
    1.//创建自定义SqlLiteHelper类的实例,调用两个参数的构造函数   
    2.SqlLiteHelper mySqlLiteHelper = new SqlLiteHelper(SqlLiteTestActivity.this,"paj_db_test");  
    3.//只有调用了getWritableDatabase()方法才会执行SqlLiteHelper类中的OnCreate中的代码   
    4.mySqlLiteHelper.getWritableDatabase(); 

    四.更新数据库版本


    [java]
    1.//调用三个参数的构造函数更新数据库的版本,数据库版本只能递增。   
    2.SqlLiteHelper myhelper = new SqlLiteHelper(getApplicationContext(),"paj_db_test", 2);  
    3.myhelper.getReadableDatabase(); 

    五.向数据库中插入信息


    [java]
    1.//创建SqlLiteHelper自定义类对象,并调用两个参数的构造函数   
    2.SqlLiteHelper  myhelper = newSqlLiteHelper(getApplicationContext(), "paj_db_test");         
    3.//创建一个ContenValues对象,存储数据   
    4.ContentValues contentValues = new ContentValues();  
    5.//把数据填充到ContentValues对象中,ContentValues对象中的键和值对应数据库中的列和值。值必须与数据列的类型相同。   
    6.contentValues.put("id", 2);  
    7.contentValues.put("name", "zhangsan");  
    8.//创建可写的SQLiteDatabase对象   
    9.SQLiteDatabase db = myhelper.getWritableDatabase();  
    10.//调用insert方法写入数据库.第一个参数为表名,第二个为null,第三个参数为CntentValues对象。   
    11.db.insert("user", null, contentValues); 
    六.更新数据库信息


    [java]
    1.//创建一个ContentValue对象存放要更新的信息   
    2.ContentValues contentValues = new ContentValues();  
    3.//把要更新的信息存放到ContentValues对象中。   
    4.//第一个参数对应数据库中的列,第二个参数对应列的值。   
    5.contentValues.put("name", "zhangsanfeng");  
    6.//创建SqlLiteHelper对象   
    7.SqlLiteHelper myhelper = new SqlLiteHelper(getApplicationContext(),"paj_db_test");  
    8.//创建一个可写的SQLiteDatabase对象   
    9.SQLiteDatabase db = myhelper.getWritableDatabase();  
    10.//使用update更新数据库   
    11.//第一个参数是数据库表名   
    12.//第二个参数是ContentValues对象   
    13.//第三个参数是SQL语句中的Where条件子语句,其中的?对应第四个参数中String数组。数组中有几个字符就有几个问号。   
    14.//第四个参数是Where的条件。使用String数组存放Where条件   
    15.db.update("user", contentValues, "id=?", newString[]{"1"}); 
    七.查询数据库


    [java]
    1.//调用两个参数的构造函数实例化SqlLiteHelper自定义类   
    2.SqlLiteHelper myhelper = new SqlLiteHelper(SqlLiteTestActivity.this,"paj_db_test");  
    3.//创建只读的SQLiteDatabase对象   
    4.SQLiteDatabase db = myhelper.getReadableDatabase();  
    5.//调用SQLitedatabase的query方法获取检索结果并放入Cursor对象中。   
    6.//query方法的第一个参数是表名   
    7.//第二个参数是使用String数组存放列名,一个列明占用一个元素   
    8.//第三个参数是SQL语句中的Where条件子语句,其中的?对应第四个参数中String数组。数组中有几个字符就有几个问号。   
    9.//第三个参数是Where的条件   
    10.//第四个参数分组   
    11.//第五个参数是SQL中的having   
    12.//第六个参数是排序   
    13.Cursor cursor = db.query("user", null,null, null, null, null, null);  
    14.//使用cursor.moveToNext()把游标下移一行。游标默认在第一行的上一行。   
    15.while (cursor.moveToNext()) {  
    16.    //使用GetString获取列中的值。参数为使用cursor.getColumnIndex("name")获取的序号。   
    17.       String nameString =cursor.getString(cursor.getColumnIndex("name"));  
    18.       String idsString = cursor.getString(cursor.getColumnIndex("id"));  
    19.       System.out.println("ID--->"+idsString);  
    20.       System.out.println("NAME--->"+nameString);  
    21.       } 

    本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2012-02/53503.htm

  • 相关阅读:
    【Java】Java中的集合框架、泛型
    【Java】Java中日期获取、数值精度、异常处理
    【Java】包装类、及字符序列CharSequence接口
    【微服务】Docker环境安装及卸载教程-持续更新中
    【Java】Stream流式编程实战
    【Java】Lambda表达式详解及实战
    【Java】Java中I/O流使用及详解
    加入博客园的第八个月
    Structs复习 Structs标签
    Structs复习 OGNL
  • 原文地址:https://www.cnblogs.com/SZ2015/p/4586306.html
Copyright © 2020-2023  润新知