如果有权限的话,adb shell命令sqlite3可以操作数据库:数据库存放在app的目录里面,要先进入/data,或者/data/data,查找app的目录,再进入databases目录,然后再执行:
sqlite3 数据库文件名
sqlite> .mode colum 修改一下查询结果的显示模式
sqlite> .header on 这条命令是打开首行显示字段名的功能
sqlite命令下执行.dbinfo,其中user version这一项是这个db的版本号(由程序员写入)。
剩下的,就看你对sql语言的掌握了。
(顺便学到的知识点:多线程中,在方法声明前面加synchronized关键字可以为方法上锁,让同一时间只有一个线程单独访问该方法。很多sqlite相关的方法都加入了这个。)
如果是在代码中要实现数据库的增删改查,则要:
1、创建一个类继承SQLiteOpenHelper
public class SQLiteHelper extends SQLiteOpenHelper {
//此类的作用:1、使用getReadableDatabase()和getWritableDatabase()获得SQLiteDatabase对象;
//2、提供了onCreate()和onUpgrade(),允许我么你在创建和升级数据库时执行一些我们自定义的操作。
public DBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override //回调函数,在第一次得到SQLiteDatabase对象的时候会执行这个方法
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
2、在主函数中创建一个SQLiteHelper对象:
SQLiteHelper sqliteOpenHelper = new SQLiteHelper
(this.getContext(),"einkPW.db",null,4);
3、用helper获取到DB的对象:
SQLiteDatabase db = sqliteOpenHelper.getReadableDatabase();
4、然后用它就可以执行sql语句了,比如:
db.execSQL("select bgPattern from table_page where id="+pageId);
不好意思,写错了,execSQL方法不能执行select或者任何要获取数据的sql语句,和JDBC比起来,Android的数据库操作真是太傻冒了。
查询语句要用query方法。相应的还有insert、delete、update()方法。
关于SQLiteDatabase所提供的方法,可以看API文档:https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase
获取query的查询结果要用指针:
Cursor cursor=db.query(………………)
结果集用循环来遍历:
While(cursor.moveToNext()){
String name= cursor.getString(…………);
}