【问题标题】:SQLite db file not found on Android在 Android 上找不到 SQLite db 文件
【发布时间】:2019-07-30 12:08:38
【问题描述】:

我无法找到创建数据库适配器的数据库文件和表。但我可以看到数据正在保存,但我无法在我的目录中找到我的 db 文件。 但我可以保存条目并在我的屏幕上查看。 这是我正在创建数据库的 DBAdapter 类。

public class DBAdapter {

    private static final String DB_NAME = "clientList.db";
    private static final int DB_VERSION = 1;
    private static final String TABLE_CLIENT = "CLIENT";
    private static final String COLUMN_CLIENT_ID = "CLIENT_ID";
    private static final String  COLUMN_CLIENT_NAME = "CLIENT_NAME";


    private static final String query = "create table test_1 " + " (COLUMN_CLIENT_ID integer primary key, COLUMN_CLIENT_NAME text)";


    private Context context;
    private SQLiteDatabase sqliteDatabase;
    private static DBAdapater dbAdapaterInstance;


    private DBAdapater(Context context){
        this.context = context;
        sqliteDatabase = new DatabaseHelper(this.context,DB_NAME,null,DB_VERSION).getWritableDatabase();
    }

    public static DBAdapater getDbAdapaterInstance(Context context){
        if(dbAdapaterInstance == null){
            dbAdapaterInstance = new DBAdapater(context);
        }
        return dbAdapaterInstance;
    }


    public boolean insert(int clientId , String name ){
        ContentValues contentValues = new ContentValues();
        contentValues.put(COLUMN_CLIENT_ID,clientId);
        contentValues.put(COLUMN_CLIENT_NAME,name);
        return sqliteDatabase.insert(TABLE_CLIENT,null,contentValues)>0;
    }

    public boolean delete(int ClientID){
        return sqliteDatabase.delete(TABLE_CLIENT, COLUMN_CLIENT_ID + "=" + ClientID,null)>0;
    }

    public boolean modify(int ClientID , String newClient){
    ContentValues contentValues = new ContentValues();
    contentValues.put(COLUMN_CLIENT_NAME,newClient);
    return sqliteDatabase.update(TABLE_CLIENT,contentValues,COLUMN_CLIENT_ID + "=" + ClientID,null)>0;

    }

    public List<DataBean> getClient(){
        List<DataBean> clientInfo = new ArrayList<DataBean>();
        Cursor cursor = sqliteDatabase.query(TABLE_CLIENT , new String[]{COLUMN_CLIENT_ID,COLUMN_CLIENT_NAME},null,null,null,null,null,null);
        if(cursor != null && cursor.getCount()>0){
            while (cursor.moveToNext()) {
                DataBean clientBean = new DataBean(cursor.getLong(0), cursor.getString(1));
                clientInfo.add(clientBean);
            }
        }
        return clientInfo;
    }

    //purpose of this class is to help outer class
    public class DatabaseHelper extends SQLiteOpenHelper{


        public DatabaseHelper(Context context , String databaseName , SQLiteDatabase.CursorFactory factory , int dbVersion){
            super(context, databaseName , factory , dbVersion);
        }



        @Override
        public void onCreate(SQLiteDatabase db) {

            db.execSQL(query);

        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        }
    }

}

这是我的 bean 类

public class DataBean {

    private long id;
    private String clientName;
    private String address;


    public DataBean(){
        super();
    }

    public DataBean(long id , String clientName){
        this.id = id;
        this.clientName = clientName;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getClientName() {
        return clientName;
    }

    public void setClientName(String clientName) {
        this.clientName = clientName;
    }
}

【问题讨论】:

标签: java android json sqlite


【解决方案1】:

如果您不指定任何路径,它将存储在您的应用程序目录的databases 文件夹中。

【讨论】:

  • 它没有存储在任何地方。我现在可以注意到,如果我删除包含 CREATE TABLE 的字符串,它仍然可以工作。请让我知道如何解决此问题
  • 正如您提到的,您可以保存和检索数据,这与CREATE TABLE 无关。您必须在databases 文件夹中找到它。
  • 我同意你的观点,但我什至找不到那个数据库文件夹。在你第一次发表评论后,我什至检查过一次。我什至检查了主目录中的文件名。那里不存在。如果你能提供你的电子邮件地址,我可以详细说明我发现了什么问题
  • main directory 是什么意思?尝试在终端中运行adb pull /data/data/com.yourpackage/databases/clientList.db 命令。您将把数据库放到您的本地环境中。
  • adb 服务器版本 (40) 与此客户端 (36) 不匹配;杀死... * 守护进程成功启动 * adb: 错误: 连接失败: 未找到设备/模拟器 .....尝试该命令后出现此错误
猜你喜欢
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多