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;
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!