0

我正在使用此代码将 SQLite DB 存储到 sdcard 位置(设备 /mnt/sdcard/MiniMate 上的位置):

string libraryPath = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;            
libraryPath = System.IO.Path.Combine(libraryPath, "MiniMate");
if (!System.IO.Directory.Exists(libraryPath)) System.IO.Directory.CreateDirectory(libraryPath);
            string path = System.IO.Path.Combine(libraryPath, sqliteFilename);

当我使用从 Visual Studio 部署到设备时,它工作得很好;但是,如果我创建 .apk 并将其安装在设备上,则会出现错误“21”。看起来它没有权限对 DB 执行某些操作,当我尝试在 DB 中插入某些内容时出现“约束”错误。

有人知道这个问题吗?我不想将数据库移动到不同的默认位置,谢谢!

我的清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.prismvs.minimate" android:versionCode="14" android:versionName="14">
  <uses-sdk android:targetSdkVersion="12" android:minSdkVersion="12" />
  <application android:icon="@drawable/icon" android:label="MiniMate">
  </application>
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.CAMERA" />
  <uses-permission android:name="android.permission.BLUETOOTH" />
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.SET_ORIENTATION" />
  <uses-permission android:name="android.permission.WRITE_OWNER_DATA" />
  <uses-permission android:name="android.permission.READ_OWNER_DATA" />
</manifest>
4

1 回答 1

0

几天前我发布了这篇文章,花了很多时间来寻找问题,因为我走错了方向,所以我想分享这个经验,也许它会帮助某人解决他们使用 SQLite + Mono for Android 的问题:

  1. 我有项目在不同的项目(常见的跨平台项目)中主要应用程序和用户库
  2. SQLite 在用户库中使用,而不是在主应用程序项目中
  3. 当我为 Google Play 构建 Release (apk) 并将其安装在 Android 设备上时,出现错误日志:E/SQLiteLog(32375): (1) near ")": syntax error E/SQLiteLog(32375): (21) API called使用 NULL 准备语句 E/SQLiteLog(32375): (21) misuse at line 63243 of [00bb9c9ce4] 调试版本没有发生,所以我为解决这个问题做了什么:在 Visual studion 项目属性 - > Mono Android 选项 - > 链接:我设置“仅 SDK 程序集”而不是“SDK 和用户程序集”此错误消失。
于 2013-02-06T14:48:06.013 回答