无法打开数据库-Android

2023-12-01

我正在使用 SQL 开发一个简单的 Android 应用程序。 我遵循以下指南 -http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

尝试打开数据库时出现错误。 这是我的 DataBaseHelp.Java 类 -

public class DataBaseHelper extends SQLiteOpenHelper{

private static String DB_PATH = "/data/data/and.testDB/databases/";

private static String DB_NAME = "MyData";

private SQLiteDatabase myDataBase; 

private final Context myContext;
public DataBaseHelper(Context context) {

 super(context, DB_NAME, null, 1);
    this.myContext = context;
} 
public void createDataBase() throws IOException{

 boolean dbExist = checkDataBase();

 if(dbExist){
  //do nothing - database already exist
 }else{
     this.getReadableDatabase();

     try {

   copyDataBase();

  } catch (IOException e) {

      throw new Error("Error copying database");

     }
 }

}

private boolean checkDataBase(){

 SQLiteDatabase checkDB = null;

 try{
  String myPath = DB_PATH + DB_NAME;
  checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);

 }catch(SQLiteException e){

  //database does't exist yet.

 }

 if(checkDB != null){

  checkDB.close();

 }

 return checkDB != null ? true : false;
}

private void copyDataBase() throws IOException{

 //Open your local db as the input stream
 InputStream myInput = myContext.getAssets().open(DB_NAME);

 // Path to the just created empty db
 String outFileName = DB_PATH + DB_NAME;

 //Open the empty db as the output stream
 OutputStream myOutput = new FileOutputStream(outFileName);

 //transfer bytes from the inputfile to the outputfile
 byte[] buffer = new byte[1024];
 int length;
 while ((length = myInput.read(buffer))>0){
  myOutput.write(buffer, 0, length);
 }

 //Close the streams
 myOutput.flush();
 myOutput.close();
 myInput.close();

}

public void openDataBase() {

 //Open the database
    String myPath = DB_PATH + DB_NAME;
 myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
}
@Override
 public synchronized void close() {
         if(myDataBase != null)
          myDataBase.close();
         super.close();
 }
 @Override
 public void onCreate(SQLiteDatabase db) {
 }
 @Override
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  }
}

这是我的 testDB.Java 类 -

public class testDB extends Activity {
SQLiteDatabase myDataBase;
public String[] gur = new String[4];
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    DataBaseHelper myDbHelper = new DataBaseHelper(this);
    myDbHelper = new DataBaseHelper(this);

    try {

        myDbHelper.createDataBase();

} catch (IOException ioe) {

    throw new Error("Unable to create database");

}

try {

    myDbHelper.openDataBase();
// Here is the problem-Can't open the database/
}catch(SQLException sqle){

    throw sqle;

}
    myDataBase = myDbHelper.getWritableDatabase();

    Cursor c = myDataBase.rawQuery("SELECT * FROM beer", null);


if (c != null ) {
    if  (c.moveToFirst()) {
          for(int x=0;x< 1;x++)
          {

              gur[x] = (c.getString(c.getColumnIndex("name")));
              c.moveToNext();
          }
}
    Toast.makeText(this,gur[0],Toast.LENGTH_LONG).show();
}


        }
    }

我使用 SQLite 数据库浏览器创建了数据库,创建了一个名为“beer”的表,添加了 2 行并将其放入项目中的 /assests 文件夹中。

请注意,我是 SQL 新手,这是我第一次使用它。我一整天都在寻找答案,但没有找到。

Thanks!


在 sqlite 数据库浏览器中打开数据库并添加一个名为“android_metadata”的新表,

您可以执行以下 SQL 语句来完成此操作:

创建表“android_metadata”(“区域设置”文本默认“en_US”)

现在在“android_metadata”表中插入包含文本“en_US”的单行:

插入“android_metadata”值('en_US')

然后,有必要将表的主 id 字段重命名为“_id”,以便 Android 知道在哪里绑定表的 id 字段。

现在将新的数据库文件复制到您的项目资产文件夹中,它将起作用......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法打开数据库-Android 的相关文章

  • 类型容器“Android 依赖项”引用不存在的库 android-support-v7-appcompat/bin/android-support-v7-appcompat.jar

    我在尝试在我的项目中使用 Action Bar Compat 支持库时遇到了某种错误 我不知道出了什么问题 因为我已按照此链接中的说明进行操作 gt http developer android com tools support libr
  • StrictMode 策略违规:我的应用程序中存在 android.os.strictmode.LeakedClosableViolation?

    Android 开发新手 第一次在我的应用程序上尝试 StrictMode 我注意到以下内容 并想知道这是否是我的应用程序或库中的问题 我不太清楚 谢谢你 D StrictMode StrictMode policy violation a
  • 如何重试已消耗的 Observable?

    我正在尝试重新执行失败的已定义可观察对象 一起使用 Retrofit2 和 RxJava2 我想在单击按钮时重试特定请求及其订阅和行为 那可能吗 service excecuteLoginService url tokenModel Ret
  • Sqlite数据库生命周期?关闭应用程序后它会被删除吗?

    我正在遵循一个简单的教程 该教程创建一个从 SQLiteOpenHelper 扩展的类 并创建一个包含一个表和 5 行的数据库 好的 但我需要更多地了解 android Sqlite 数据库 例如 如果应用程序关闭或手机关机会发生什么 数据
  • 在 Android Studio 中,为什么我必须在模拟器中单击“运行应用程序”两次才能启动应用程序?

    在 Android Studio 中 当我按播放按钮在 Android 模拟器上安装并运行应用程序时 大约 5 10 秒后 我在屏幕底部收到一条消息 显示 安装成功 但应用程序实际上并未运行在模拟器上 我必须再次按下播放按钮 这是非常令人沮
  • 卸载后 Web 应用程序不显示“添加到主屏幕”

    这是我第一次创建网络应用程序 我设法解决了这个问题 所以我得到了实际的 chrome 提示 将其添加到主屏幕 然后我从手机上卸载了该网络应用程序 因为我想将其展示给我的同事 但是 屏幕上不再出现提示 问题 这是有意为之的行为还是我的应用程序
  • SearchView过滤ListView

    我已经实现了搜索视图来过滤我的列表视图项目 当我输入任何文本时 它会过滤列表 但当我退出搜索视图时 它不会返回原始列表项 public class PlacesListAdapter extends ArrayAdapter
  • SQLite插入大量记录时出现问题

    我试图使用 SQLite3 shell 在某个表中插入 15530 条记录 但出现该错误 我搜索了解决方案 SQLITE MAX COMPOUND SELECT 默认为 500 是原因 但我不知道如何使用 Shell 更改它 错误 复合 S
  • 计数物体和更好的填充孔的方法

    我是 OpenCV 新手 正在尝试计算物体的数量在图像中 我在使用 MATLAB 图像处理工具箱之前已经完成了此操作 并在 OpenCV Android 中也采用了相同的方法 第一步是将图像转换为灰度 然后对其进行阈值计算 然后计算斑点的数
  • Android Activity 生命周期函数基础知识

    我正在测试这段代码 它显示活动所处的状态 public class Activity101Activity extends Activity String tag Lifecycle Called when the activity is
  • 找不到处理意图 com.instagram.share.ADD_TO_STORY 的活动

    在我们的 React Native 应用程序中 我们试图让用户根据视图 组件中的选择直接将特定图像共享到提要或故事 当我们尝试直接使用 com instagram share ADD TO FEED 进行共享时 它以一致的方式完美运行 但是
  • 如何使用InputConnectionWrapper?

    我有一个EditText 现在我想获取用户对此所做的所有更改EditText并在手动将它们插入之前使用它们EditText 我不希望用户直接更改中的文本EditText 这只能由我的代码完成 例如通过使用replace or setText
  • 在 android DatePickerDialog 中将语言设置为法语

    有什么办法可以让日期显示在DatePickerDialog用法语 我已经搜索过这个但没有找到结果 这是我的代码 Calendar c Calendar getInstance picker new DatePickerDialog Paym
  • Android Studio 0.4.3 Eclipse项目没有gradle

    在此版本之前 在 Android Studio 中按原样打开 Eclipse 项目似乎很容易 无需任何转换 我更喜欢 Android Studio 环境 但我正在开发一个使用 eclipse 作为主要 IDE 的项目 我不想只为这个项目下载
  • 字符串数组文本格式化

    我有这个字符串 String text Address 1 Street nr 45 Address 2 Street nr 67 Address 3 Street nr 56 n Phone number 000000000 稍后将被使用
  • Android Studio - Windows 7 上的 Android SDK 问题

    我对 Google i o 2013 上发布的最新开发工具 Android Studio 有疑问 我已经成功安装了该程序并且能够正常启动 我可以导入现有项目并对其进行编辑 但是 当我尝试单击 SDK 管理器图标或 AVD 管理器图标时 或者
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 增加活动的屏幕亮度

    显然 Android 操作系统中至少有三种不同的技术可以改变屏幕亮度 其中两个在纸杯蛋糕之后不再起作用 而第三个被接受的技术显然有一个错误 我想在单视图活动开始时增加屏幕亮度 然后在活动结束时将亮度恢复为用户设置 没有按钮 没有第二个视图或
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 强制 Listview 不重复使用视图(复选框)

    我做了一个定制Listview 没有覆盖getView 方法 Listview 中的每个项目都具有以下布局 联系布局 xml

随机推荐

  • 如何通过改变进度条的颜色来显示护盾等级

    我在代码中有一个进度条 仅显示绿色 但我想用玩家的百分比修改它 如果玩家在 50 到 100 之间 则其颜色为绿色 如果小于 50 且等于25 其颜色为橙色 低于 25 为红色 我附上了Python代码 如果有人提供帮助 我将非常感激 de
  • 将电话号码与国家/地区代码相匹配的正则表达式

    这是我用来匹配电话号码的正则表达式 例如 00 00 00 00 00 00 00 0 00 00 00 00 00 0 00 00 00 00 d 2 s d 2 s d 2 s d 2 s d 2 s d 2 s d 2 s d s d
  • 如何在 Symfony 中设置数据转换器以重用现有实体?

    我正在 Symfony 中开发一个具有内置标记功能的文章编辑器 控制器 class MainController extends Controller public function indexAction Request request
  • getGraphics和paintComponent的Graphics对象之间的区别

    如果我使用 JPanel getGraphics 返回的 Graphics 对象与在 PaintComponent 方法中传递的 Graphics 对象有什么区别 getGraphics Can be null 是最后一次喷漆过程的 快照
  • .NET 中的托管和非托管代码

    就 NET 框架而言 托管代码和非托管代码有什么区别 托管代码是一种差异化 由 Microsoft 创建来识别 需要的代码 并且只会在以下条件下执行 管理 一个CLR 虚拟机 导致Bytecode 使用托管代码的好处包括 程序员的便利性 通
  • 用 numpy 最小二乘法拟合线性曲面

    所以我想解方程z a b y c x 得到a b c 即 使 平面 表面适合 3D 空间中的大量散点 但我似乎找不到任何东西 我认为会有一个简单的模块来解决这样一个简单的问题 我试过了 其中x y z是数组 ys zip x y coeff
  • 我可以通过java在我的系统上安装证书吗

    我可以通过java在我的系统上安装证书吗 像这样的东西例如 证书 证书 someClass getsystemCertificates 有没有可用的api 您可以使用keytool命令获取 cacerts 文件中的证书列表 该文件是 Jav
  • 使用较短的数组查询 IndexedDB 复合索引

    IndexedDB 允许您对多个属性创建索引 就像如果你有类似的物体 a 0 b 0 你可以建立索引a and b 复合索引的行为是很奇怪 但显然应该可以使用比复合索引短的数组进行查询 所以在我的示例中 我应该能够查询类似的内容 0 并得到
  • Django登录AttributeError:'AnonymousUser'对象没有属性'_meta'

    我有这个代码 from django contrib auth import logout login authenticate if User objects filter email email exists existing user
  • 更新时如何检查 Tensorflow 中梯度的 NaN?

    All 当您训练具有大量样本的大型模型时 某些样本在参数更新时可能会导致 NaN 梯度 我想找出这些样本 同时我不希望这批样本的梯度更新模型的参数 因为这可能会导致模型的参数为NaN 那么有人有解决这个问题的好主意吗 我的代码如下 Crea
  • 隐式删除默认构造函数与编译器不合成默认构造函数相同

    我正在学习 C 中的类 我才知道在某些情况可以隐式删除默认构造函数 另外 我读到 当我们有用户定义的构造函数时 编译器将不会自动合成默认构造函数 以我目前的理解 隐式删除默认构造函数与默认构造函数不自动合成时的情况有很大不同 我的意思是 在
  • 如果这个类没有 Dispose 方法,它如何实现 IDisposable?

    FtpWeb响应实现 IDisposable 但它没有 Dispose 方法 这怎么可能 它在基类WebResponse中实现 参见http msdn microsoft com en us library system net webre
  • 用于检查输入是否为整数的 C++ 修复[重复]

    这个问题在这里已经有答案了 例如 如果我输入 2a 它不会显示错误 也不会要求用户重新输入该值 我该如何解决 while std cin fail std cout lt lt ERROR enter a number lt lt std
  • 如何使用Guice的@Singleton?

    我需要创建某个类的一个实例 并且这个实例需要可以从代码中的任何位置访问 所以 我找到了 Guice 并且我想使用这个包中的 Singleton 但我没有找到任何示例或一些文档来说明如何使用它以及如何进行声明 Singleton 非常容易使用
  • Addhandler、button.click 未使用 VB.NET 触发

    我遇到了按钮和 AddHandler 的问题 仅当我在 Page load 中使用 AddHandler Button1 click AddressOf 时它才有效 但如果我在子例程之一中动态创建按钮 则该事件不会触发 例如
  • 在大图像中绘制边界框

    我有一个大的二值图像 4k x 7k 像素 我想从中提取整个黄色部分作为单个矩形 我尝试了二元腐蚀来均匀黄色区域内的特征 然后我用了bbox的方法skimage regionprops但对于带有一个大 bbox 的大图像来说 它似乎工作得不
  • 在 html 中创建不可见的文本字段?

    我正在尝试将 html 代码放入我老板提供的设计模型中 并且一些美学 例如搜索栏的形状 有点奇怪和复杂 作为一个简单的解决方案 我想我只需将一个文本字段放在搜索栏的图像上 但我无法让它工作 谁能建议一种方法 将文本字段分层在图像上 使其不可
  • R:根据嵌套组计算比例

    我正在使用 R 编程语言 我有以下数据集 set seed 123 library dplyr Patient ID 1 5000 gender lt c Male Female gender lt sample gender 5000 r
  • 尝试使用 PDO 更新记录

    我更新了问题代码 但仍然有问题 没有错误 但没有更新记录 还需要弄清楚如何写入记录 更新成功 我被困在这个更新页面了
  • 无法打开数据库-Android

    我正在使用 SQL 开发一个简单的 Android 应用程序 我遵循以下指南 http www reigndesign com blog using your own sqlite database in android applicati