在 Android 上找不到 SQLite db 文件
Posted
技术标签:
【中文标题】在 Android 上找不到 SQLite db 文件【英文标题】:SQLite db file not found on Android 【发布时间】: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;
【问题讨论】:
欢迎来到 Stack Overflow!请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers?。 【参考方案1】:如果您不指定任何路径,它将存储在您的应用程序目录的databases
文件夹中。
【讨论】:
它没有存储在任何地方。我现在可以注意到,如果我删除包含 CREATE TABLE 的字符串,它仍然可以工作。请让我知道如何解决此问题 正如您提到的,您可以保存和检索数据,这与CREATE TABLE
无关。您必须在databases
文件夹中找到它。
我同意你的观点,但我什至找不到那个数据库文件夹。在你第一次发表评论后,我什至检查过一次。我什至检查了主目录中的文件名。那里不存在。如果你能提供你的电子邮件地址,我可以详细说明我发现了什么问题
main directory
是什么意思?尝试在终端中运行adb pull /data/data/com.yourpackage/databases/clientList.db
命令。您将把数据库放到您的本地环境中。
adb 服务器版本 (40) 与此客户端 (36) 不匹配;杀死... * 守护进程成功启动 * adb: 错误: 连接失败: 未找到设备/模拟器 .....尝试该命令后出现此错误以上是关于在 Android 上找不到 SQLite db 文件的主要内容,如果未能解决你的问题,请参考以下文章
Azure上找不到MongoDB?不妨试试Azure Cosmos DB
Azure上找不到MongoDB?不妨试试Azure Cosmos DB
Android ClassNotFoundException:在路径上找不到类