在android中使用sqlite3很簡單,就是繼承 SQLiteOpenHelper類,然後重寫onCreate和onUpdate方法。
oncreate是在數據庫首次創建的時候調用,在onupdate是在已有數據庫,但是版本不同的時候調用。
下面是我自己的dbhelper類
public class DBHelper extends SQLiteOpenHelper {
private static String dbName = "video_path.db";//數據庫名稱
private static String initSQL;//初始化sql語句
private static String upgradeSQL;//更新語句
static {
initSQL = "CREATE TABLE IF NOT EXISTS video_list (id INTEGER PRIMARY KEY AUTOINCREMENT, key NVARCHAR(255), file NVARCHAR(255));";
upgradeSQL = initSQL;
}
public DBHelper(Context context, int version, String name) {
super(context, name, null, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(initSQL);//創建數據庫
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
調用這個dbhelper類主要就是得到它的SQLiteDatabase,主要有兩個方法:getWritableDatabase 和 getReadableDatabase
下面我寫的調用方法:
public class MainActivity extends AppCompatActivity {
Button btRead ;
Button btWrite ;
TextView tv ;
DBHelper dbHelper ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
dbHelper = new DBHelper(this,1,"hello");
tv = (TextView)findViewById(R.id.tv);
btRead = (Button)findViewById(R.id.read_data);
btRead.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
String sql ="select * from video_list where key='a';";
Cursor cursor = dbHelper.getReadableDatabase().rawQuery(sql,null);
while (cursor.moveToNext()){
String file = cursor.getString(cursor.getColumnIndex("file"));
tv.setText(file);
}
}catch (SQLException e){
e.printStackTrace();;
}
}
});
btWrite = (Button)findViewById(R.id.write_bt);
btWrite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
dbHelper.getWritableDatabase().execSQL("insert into video_list (key,file) values('a','hello.mpg');");
}catch (SQLException e){
e.printStackTrace();
}
}
});
}
}
當調用read時,會在一個TextView中顯示hello.mpg就說明成功了。
如何查看數據庫呢?
如果沒有指定絕對路徑的路徑,那麼默認是在 "/data/data/包名"這個目錄下,首先在adb shell 下取得root權限。
1、首先設置權限:chmod 777 -R /data/data/包名 # 把這個目錄下具有所有的權限。
2、設置、/data 和、/data/data 777 權限
chmod 777 /data
chmod 777 /data/data
3、也可以直接 chmod 777 -R /data 就行,但是我的手機是我經常用的手機,這樣的話,如果有病毒的話,支付寶、微信這些就app就比較危險了,不建議真機這樣做。
使用ddms把 databases目錄下的數據庫push到電腦上。
4.使用sqliteExport打開數據庫,這樣就ok了,不必使用sqlite命令行來打開它了,什麼年代了,還用命令行!。!
結果如下: