Android SQLite数据库中的表详解
AndroidSQLite数据库
前言
以前写PHP的时候,内置了print_r()和var_dump()两个函数用于打印输出任意类型的数据内部结构,现在做Android的开发,发现并没有这种类似的函数,对于数据库的查看很不方便,于是就写了一下查看数据库表的方法代码。
代码实现
importjava.util.Arrays; importandroid.app.Activity; importandroid.database.Cursor; importandroid.database.sqlite.SQLiteDatabase; importandroid.os.Bundle; importandroid.util.Log; importandroid.view.View; importandroid.view.View.OnClickListener; importandroid.widget.Button; publicclassSecondActivityextendsActivity{ publicstaticfinalStringTAG="DebugInfo"; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); ((Button)findViewById(R.id.btnQue)).setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ MyDatabaseHelperdbhelper=newMyDatabaseHelper(SecondActivity.this,"BookStore.db",null,1); SQLiteDatabasedb=dbhelper.getWritableDatabase(); //核心区 //读取系统表sqlite_master Stringsql="select*fromsqlite_master"; Cursorcursor=db.rawQuery(sql,null); //打印表的所有列名 Log.i(TAG,Arrays.toString(cursor.getColumnNames())); //打印当前数据库中的所有表 if(cursor.moveToFirst()){ do{ Stringstr=""; for(Stringitem:cursor.getColumnNames()){ str+=item+":"+cursor.getString(cursor.getColumnIndex(item))+"\n"; } Log.i(TAG,str); }while(cursor.moveToNext()); } } }); } }
功能扩展
查看表是否存在
publicBooleantableIsExist(SQLiteDatabasedb,StringtableName){ booleanresult=false; Cursorcursor=null; if(tableName==null){ returnresult; } Stringsql="selectcount(*)fromsqlite_masterwheretype='table'andname='"+tableName.trim()+"'"; cursor=db.rawQuery(sql,null); if(cursor.moveToNext()){ if(cursor.getInt(0)>0){ result=true; } } returnresult; }
查看数据库中有哪些表
publicArrayList<String>tablesInDB(SQLiteDatabasedb){ ArrayList<String>list=newArrayList<String>(); Stringsql="selectnamefromsqlite_masterwheretype='table'"; Cursorcursor=db.rawQuery(sql,null); if(cursor.moveToFirst()){ do{ list.add(cursor.getString(0)); }while(cursor.moveToNext()); } returnlist; }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!