安卓使用什么数据库哪本书比较好比较好

SQLite是轻量级的、嵌入式的、关系型数据库,目前已经在iPhone、Android等手机系统中使用,SQLite可移植性好,很容易使用,很小,高效而且可靠。SQLite嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程。SQLite数据库对SQL规范的支持很全面,它支持大多数SQL标准,同时摒弃了一些复杂的功能,添加了一些自身的特性,下图是SQLite所支持的SQL语句类型:
下图是SQLite所定义的数据类型:
SQLite也支持SQL标准类型,VARCHAR、CHAR、BIGINT等。
创建数据库
Android 不自动提供数据库。在 Android 应用程序中使用 SQLite,必须自己创建数据库,然后创建表、索引,填充数据。Android 提供了 SQLiteOpenHelper 帮助你创建一个数据库,只要继承 SQLiteOpenHelper 类,就可以创建数据库。继承了SQLiteOpenHelper的子类,必须实现三个方法:
1、构造函数,调用父类 SQLiteOpenHelper 的构造函数。这个方法需要四个参数:上下文环境(例如,一个 Activity),数据库名字,一个可选的游标工厂(通常是 Null),一个代表你正在使用的数据库模型版本的整数。
2、onCreate()方法,它需要一个 SQLiteDatabase 对象作为参数,根据需要对这个对象填充表和初始化数据。
3、onUpgrage() 方法,它需要三个参数,一个 SQLiteDatabase 对象,一个旧的版本号和一个新的版本号,这样可以清楚如何把一个数据库从旧的模型转变到新的模型。
如下代码:
class databaseAdapter extends SQLiteOpenHelper{
public databaseAdapter(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
还可以使用如下方法创建数据库:
1、Context.createDatabase(String name,int vision,int mode,CursorFactory factory);//创建一个新的数据库并返回一个SQLiteDatabase对象
2、SQLiteDatabase mydb = SQLiteDatabase.create(new CursorFactory() {
  @Override
  public Cursor newCursor(SQLiteDatabase db, SQLiteCursorDriver masterQuery,
    String editTable, SQLiteQuery query) {
3、SQLiteDatabase db = this.openOrCreateDatabase("mydb.db", MODE_PRIVATE, new CursorFactory() {
  @Override
  public Cursor newCursor(SQLiteDatabase db, SQLiteCursorDriver masterQuery,
    String editTable, SQLiteQuery query) {
      // TODO Auto-generated method stub
      
删除数据库
Context.deleteDatabase(String name);//删除指定名字的数据库
打开数据库
Context.openDatabase(String basename,CursorFactory factory);//打开一个存在的数据库,并返回SQLiteDatabase对象
非查询SQL指令
SQLiteDatabase.execSQLite(String sql);//可以用来执行非查询的SQL指令,这些指令执行后没有结果返回
查询SQL指令,游标cursors的使用
Cursor cursor = mydb.rawQuery(String sql,String[] selectionArg);//第一个参数为查询语句,第二个参数为查询语句中的占位符,若没有占位符,则第二个参数为null
阅读(...) 评论()Java代码&&public&class&DBCreate&{&&&&&&public&static&void&CreateDatabase(SQLiteDatabase&db)&{&&&&&&&&&&db.beginTransaction();&&&&&&&&&&try&{&&&&&&&&&&&&&&create_NetTaskBuffer(db);&&&&&&&&&&&&&&&&insert_SQL(db);&&&&&&&&&&&&&&&&db.setTransactionSuccessful();&&&&&&&&&&}&catch&(Exception&e)&{&&&&&&&&&&&&&&e.printStackTrace();&&&&&&&&&&}&finally&{&&&&&&&&&&&&&&db.endTransaction();&&&&&&&&&&}&&&&&&}&&&&&&&&&&&&private&static&void&create_NetTaskBuffer(SQLiteDatabase&db)&{&&&&&&&&&&db.execSQL("DROP&TABLE&IF&EXISTS&NetTaskBuffer");&&&&&&&&&&StringBuilder&sql&=&new&StringBuilder();&&&&&&&&&&sql.append("CREATE&TABLE&IF&NOT&EXISTS&NetTaskBuffer&(");&&&&&&&&&&sql.append("&id&INTEGER&PRIMARY&KEY&AUTOINCREMENT,");&&&&&&&&&sql.append("&label&TEXT&COLLATE&NOCASE,");&&&&&&&&&sql.append("&param&TEXT&COLLATE&NOCASE,");&&&&&&&&&sql.append("&result&TEXT&COLLATE&NOCASE,");&&&&&&&&&sql.append("&remark&TEXT&COLLATE&NOCASE,");&&&&&&&&&&sql.append("&time&LONG)");&&&&&&&&&db.execSQL(sql.toString());&&&&&&}&&&&&&&&&&&&private&static&void&insert_SQL(SQLiteDatabase&db)&{&&&&&&&&&&&&&&&&}&&}&&&&&&&&&&&&public&abstract&class&DBHelper&extends&SQLiteOpenHelper&{&&&&&&&&static&String&name&=&"hk.db";&&&&&static&CursorFactory&cursorFactory&=&&&&&&&static&int&version&=&1000;&&&&Context&&&&&&&&&protected&ContentValues&contentV&&&&&&&protected&String&tableN&&&&&&&&protected&DBHelper(Context&context,&String&tableName)&{&&&&&&&&&&super(context,&name,&cursorFactory,&version);&&&&&&&&&&this.context&=&&&&&&&&&&&this.tableName&=&tableN&&&&&&}&&&&&&&&&&&&public&void&onCreate(SQLiteDatabase&db)&{&&&&&&&&&&&&&&&&&&DBCreate.createDatabase(db);&&&&&&}&&&&&&&&&&&&public&void&onUpgrade(SQLiteDatabase&db,&int&oldVersion,&int&newVersion)&{&&&&&&&&&&onCreate(db);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&public&void&onOpen(SQLiteDatabase&db)&{&&&&&&&&&&super.onOpen(db);&&&&&}&&&&&&&&public&void&finalize()&{&&&&&&&&&&close();&&&&&&}&&&&&&&&&&&&&&&&public&void&execSQL(String&sql)&{&&&&&&&&&&System.out.println("==execSQL=="&+&sql);&&&&&&&&&&SQLiteDatabase&db&=&getWritableDatabase();&&&&&&&&&&db.execSQL(sql);&&&&&&&&&&db.close();&&&&&&}&&&&&&&&&&&&public&boolean&execSQLBatch(ArrayList&String&&list)&{&&&&&&&&&&SQLiteDatabase&db&=&getWritableDatabase();&&&&&&&&&&db.beginTransaction();&&&&&&&&&&try&{&&&&&&&&&&&&&&for&(String&sql&:&list)&{&&&&&&&&&&&&&&&&&&db.execSQL(sql);&&&&&&&&&&&&&&}&&&&&&&&&&&&&&db.setTransactionSuccessful();&&&&&&&&&&}&catch&(Exception&e)&{&&&&&&&&&&&&&&e.printStackTrace();&&&&&&&&&&&&&&return&&&&&&&&&&&}&finally&{&&&&&&&&&&&&&&db.endTransaction();&&&&&&&&&&&&&&db.close();&&&&&&&&&&}&&&&&&&&&&return&&&&&&&}&&&&&&&&&&&&public&int&delete(int&id)&{&&&&&&&&&&SQLiteDatabase&db&=&getWritableDatabase();&&&&&&&&&&int&result&=&db.delete(tableName,&"id=?",&new&String[]&{&id&+&""&});&&&&&&&&&&db.close();&&&&&&&&&&return&&&&&&&}&&&&&&&&&&&&public&int&delete(String&whereStr,&String[]&arr)&{&&&&&&&&&&SQLiteDatabase&db&=&getWritableDatabase();&&&&&&&&&&int&result&=&db.delete(tableName,&whereStr,&arr);&&&&&&&&&&db.close();&&&&&&&&&&return&&&&&&&}&&&&&&&&&&&&public&void&clearTable()&{&&&&&&&&&&SQLiteDatabase&db&=&getWritableDatabase();&&&&&&&&&&db.execSQL("delete&from&"&+&tableName);&&&&&&&&&&db.close();&&&&&&}&&&&&&&&&&&&public&static&Cursor&Query(SQLiteDatabase&db,&String&sql)&{&&&&&&&&&&System.out.println("==Query=="&+&sql);&&&&&&&&&&return&db.rawQuery(sql,&new&String[]&{});&&&&&&}&&&&&&&&&&&&public&static&void&execSQL(SQLiteDatabase&db,&String&sql)&{&&&&&&&&&&System.out.println("==execSQL=="&+&sql);&&&&&&&&&&db.execSQL(sql);&&&&&&}&&&&}&&&&public&class&NetTaskBufferDao&extends&DBHelper&{&&&&&&int&expiryDays&=&10;&&&&&&&public&NetTaskBufferDao(Context&context)&{&&&&&&&&&&super(context,&"NetTaskBuffer");&&&&&&}&&&&&&&&&&&&public&void&iniContentValues(NetTaskBuffer&pojo)&{&&&&&&&&&&contentValues&=&new&ContentValues();&&&&&&&&&&contentValues.put("id",&pojo.id);&&&&&&&&&&contentValues.put("label",&pojo.label);&&&&&&&&&&contentValues.put("param",&pojo.param);&&&&&&&&&&contentValues.put("result",&pojo.result);&&&&&&&&&&contentValues.put("remark",&pojo.remark);&&&&&&&&&&contentValues.put("time",&pojo.time);&&&&&&}&&&&&&&&public&NetTaskBuffer&setBaseItem(Cursor&cursor)&{&&&&&&&&&&NetTaskBuffer&pojo&=&new&NetTaskBuffer();&&&&&&&&&&pojo.id&=&cursor.getInt(cursor.getColumnIndex("id"));&&&&&&&&&&pojo.label&=&cursor.getString(cursor.getColumnIndex("label"));&&&&&&&&&&pojo.param&=&cursor.getString(cursor.getColumnIndex("param"));&&&&&&&&&&pojo.result&=&cursor.getString(cursor.getColumnIndex("result"));&&&&&&&&&&pojo.remark&=&cursor.getString(cursor.getColumnIndex("remark"));&&&&&&&&&&pojo.time&=&cursor.getLong(cursor.getColumnIndex("time"));&&&&&&&&&&return&&&&&&&}&&&&&&&&&&&&public&String&getBuffer(String&label,&String&param)&{&&&&&&&&&&String&sql&=&"select&*&from&"&+&tableName&&&&&&&&&&&&&&&&&&+&"&where&label=?&and&param=?&";&&&&&&&&&&NetTaskBuffer&obj&=&getOneAsSQL(sql,&new&String[]&{&label,&param&});&&&&&&&&&&if&(null&==&obj)&{&&&&&&&&&&&&&&return&&&&&&&&&&&}&&&&&&&&&&Date&time&=&new&Date(obj.time);&&&&&&&&&&Calendar&c&=&Calendar.getInstance();&&&&&&&&&&&&c.add(Calendar.DAY_OF_MONTH,&-expiryDays);&&&&&&&&&&if&(pareTo(c.getTime())&&&0)&{&&&&&&&&&&&&&&delete(obj.id);&&&&&&&&&&&&&&return&&&&&&&&&&&}&&&&&&&&&&return&obj.&&&&&&}&&&&&&&&public&String&getBuffer(String&label,&String&param,&String&remark)&{&&&&&&&&&&String&sql&=&"select&*&from&"&+&tableName&&&&&&&&&&&&&&&&&&+&"&where&label=?&and&param=?&and&remark=?";&&&&&&&&&&NetTaskBuffer&obj&=&getOneAsSQL(sql,&new&String[]&{&label,&param,&&&&&&&&&&&&&&&&&&remark&});&&&&&&&&&&if&(null&==&obj)&{&&&&&&&&&&&&&&return&&&&&&&&&&&}&&&&&&&&&&Date&time&=&new&Date(obj.time);&&&&&&&&&&Calendar&c&=&Calendar.getInstance();&&&&&&&&&&&&c.add(Calendar.DAY_OF_MONTH,&-expiryDays);&&&&&&&&&&if&(pareTo(c.getTime())&&&0)&{&&&&&&&&&&&&&&delete(obj.id);&&&&&&&&&&&&&&return&&&&&&&&&&&}&&&&&&&&&&return&obj.&&&&&&}&&&&&&&&public&void&deleteBuffer(String&label)&{&&&&&&&&&&String&whereSql&=&"&label=?";&&&&&&&&&&delete(whereSql,&new&String[]&{&label&});&&&&&&}&&&&&&&&public&void&deleteBuffer(String&label,&String&param)&{&&&&&&&&&&String&whereSql&=&"&label=?&and&param=?";&&&&&&&&&&delete(whereSql,&new&String[]&{&label,&param&});&&&&&&}&&&&&&&&public&void&deleteBuffer(String&label,&String&param,&String&remark)&{&&&&&&&&&&String&whereSql&=&"&label=?&and&param=?&and&remark=?";&&&&&&&&&&delete(whereSql,&new&String[]&{&label,&param,&remark&});&&&&&&}&&&&&&&&&&&&&&&&&&public&ArrayList&NetTaskBuffer&&getListAsSQL(String&sql)&{&&&&&&&&&&SQLiteDatabase&db&=&getReadableDatabase();&&&&&&&&&&Cursor&cursor&=&db.rawQuery(sql,&new&String[]&{});&&&&&&&&&&ArrayList&NetTaskBuffer&&itemList&=&new&ArrayList&NetTaskBuffer&();&&&&&&&&&&for&(cursor.moveToFirst();&!(cursor.isAfterLast());&cursor.moveToNext())&{&&&&&&&&&&&&&&itemList.add(setBaseItem(cursor));&&&&&&&&&&}&&&&&&&&&&cursor.close();&&&&&&&&&&db.close();&&&&&&&&&&return&itemL&&&&&&}&&&&&&&&&&&&public&NetTaskBuffer&getById(int&id)&{&&&&&&&&&&String&sql&=&"select&*&from&"&+&tableName&+&"&where&id="&+&&&&&&&&&&&return&getOneAsSQL(sql,&null);&&&&&&}&&&&&&&&&&&&public&NetTaskBuffer&getOneAsSQL(String&sql,&String[]&arr)&{&&&&&&&&&&SQLiteDatabase&db&=&getReadableDatabase();&&&&&&&&&&Cursor&cursor&=&db.rawQuery(sql,&arr);&&&&&&&&&&try&{&&&&&&&&&&&&&&if&(null&!=&cursor&&&&cursor.getCount()&&&0)&{&&&&&&&&&&&&&&&&&&cursor.moveToFirst();&&&&&&&&&&&&&&&&&&return&setBaseItem(cursor);&&&&&&&&&&&&&&}&&&&&&&&&&}&finally&{&&&&&&&&&&&&&&cursor.close();&&&&&&&&&&&&&&db.close();&&&&&&&&&&}&&&&&&&&&&return&&&&&&&}&&&&&&&&&&&&public&long&save(NetTaskBuffer&pojo)&{&&&&&&&&&&if&(null&==&pojo.time&||&0&==&pojo.time)&{&&&&&&&&&&&&&&pojo.time&=&new&Date().getTime();&&&&&&&&&&}&&&&&&&&&&Long&idOrEffectRows&=&0l;&&&&&&&&&&if&(null&==&pojo.id&||&pojo.id&&&1)&{&&&&&&&&&&&&&&idOrEffectRows&=&insert(pojo);&&&&&&&&&&}&else&{&&&&&&&&&&&&&&idOrEffectRows&=&(long)&update(pojo);&&&&&&&&&&}&&&&&&&&&&return&idOrEffectR&&&&&&}&&&&&&&&&&&&public&long&insert(NetTaskBuffer&pojo)&{&&&&&&&&&&SQLiteDatabase&db&=&getWritableDatabase();&&&&&&&&iniContentValues(pojo);&&&&&&&&&long&result&=&db.insert(tableName,&null,&contentValues);&&&&&&&&&&if&(result&!=&-1)&{&&&&&&&&&&&&&&pojo.id&=&(int)&&&&&&&&&&&}&&&&&&&&&&db.close();&&&&&&&&&&return&&&&&&&}&&&&&&&&&&&&public&int&update(NetTaskBuffer&pojo)&{&&&&&&&&&&SQLiteDatabase&db&=&getWritableDatabase();&&&&&&&&&&iniContentValues(pojo);&&&&&&&&&int&result&=&db.update(tableName,&contentValues,&"id=?",&&&&&&&&&&&&&&&&&&new&String[]&{&pojo.id&+&""&});&&&&&&&&&&db.close();&&&&&&&&&&return&&&&&&&}&&&&}&&安卓标准数据库构建.zip&(9.2 KB)

我要回帖

更多关于 安卓用什么数据库 的文章

 

随机推荐