关于数据库的学习

来源:互联网 发布:数据库工程师培训 编辑:程序博客网 时间:2024/06/05 12:49
SQLiteOpenHelper类,在该类的 构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象。继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个 方法。

onCreate(SQLiteDatabase db) : 当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。

onUpgrade(SQLiteDatabse dv, int oldVersion,int new Version):当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。

比如:

  1. public class DatabaseHelper extends SQLiteOpenHelper {  
  2.     //类没有实例化,是不能用作父类构造器的参数,必须声明为静态  
  3.          private static final String name = "itcast"//数据库名称  
  4.          private static final int version = 1//数据库版本  

  5.          public DatabaseHelper(Context context) {  
  6. //第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null,代表使用系统默认的工厂类  
  7.                 super(context, name, null, version);  
  8.          }  
  9.         @Override public void onCreate(SQLiteDatabase db) {  
  10.               db.execSQL("CREATE TABLE IF NOT EXISTS person (personid integer primary key autoincrement, name varchar(20), age INTEGER)");     
  11.          }  
  12.         @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  13.                db.execSQL(" ALTER TABLE person ADD phone VARCHAR(12) NULL "); //往表中增加一列  
  14.     // DROP TABLE IF EXISTS person 删除表  
  15.        }  

<pre name="code" class="java"><span style="font-size:14px;"> 除了上述两个必须要实现的方法外,还可以选择性地实现onOpen 方法,该方法会在每次打开数据库时被调用。 SQLiteOpenHelper 类的基本用法是:当需要创建或打开一个数据库并获得数据库对象时,首先根据指定的文件名创建一个辅助对象,然后调用该对象的getWritableDatabase 或 getReadableDatabase方法 获得SQLiteDatabase 对象。 调用getReadableDatabase 方法返回的并不总是只读数据库对象,一般来说该方法和getWriteableDatabase 方法的返回情况相同,只有在数据库仅开放只读权限或磁盘已满时才会返回一个只读的数据库对象。 dh = new DatabaseHelper(mContext, dbName, null, dbVersion);  mSQLiteDatabase = dh.getWritableDatabase(); 然后就可以执行数据库的语句了</span>
<pre name="code" class="java"><span style="font-size:14px;">String sql = "select * from record";cursor = mSQLiteDatabase.rawQuery(sql, null);注意<span style="color:black;margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; border-top-style:none; border-right-style:none; border-bottom-style:none; border-left-style:none; border-width:initial; border-color:initial; background-color:inherit"><span class="comment" style="color:#0820;margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; border-top-style:none; border-right-style:none; border-bottom-style:none; border-left-style:none; border-width:initial; border-color:initial; background-color:inherit">execSQL()方法可以执行insert、delete、update和CREATE TABLE之类有更改行为的SQL语句; rawQuery()方法用于执行select语句。</span></span></span><span style="font-size:14px;"></span>
//获取name列的索引
int nameIndex = cursor.getColumnIndex("name");
操作完后关闭
cursor.close();//关闭结果集
db.close();//关闭数据库对象 





0 0
原创粉丝点击