在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命令行来打开它了,什么年代了,还用命令行!。!
结果如下: