SQLite错误21。 “滥用线......”

时间:2013-01-30 22:22:06

标签: android sqlite mono

我正在使用此代码将SQLite DB存储到SD卡位置(设备上的位置/ 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中插入内容时出现“Constraint”错误。

有人知道这个问题吗? 我不打算将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>

1 个答案:

答案 0 :(得分:0)

我几天前发布这个并且花了很多时间找到问题,因为我的错误方向,所以我想分享这个经验也许它会帮助某人用SQLite + Mono for Android解决他们的问题: / p>

  1. 我在不同项目(通用跨平台项目)中设计了主要应用程序和用户库的项目
  2. SQLite在用户库中使用而不是在主应用程序项目中
  3. 当我为Google Play构建Release(apk)并将其安装在Android设备上时,我遇到了错误日志:E / SQLiteLog(32375):( 1)near“)”:语法错误 E / SQLiteLog(32375):( 21)使用NULL预处理语句调用API E / SQLiteLog(32375):( 21)在[00bb9c9ce4]第63243行滥用 调试版本没有发生,所以我为fixinfg做了这个问题: 关于Visual studion项目属性 - &gt;单声道Android选项 - &gt;链接:我设置“仅SDK程序集”而不是“SDK和用户程序集” 此错误消失。