Android SQLiteConstraintException:错误代码19:约束失败

2024-02-25

我已经看到了有关此异常的其他问题,但所有这些问题似乎都通过解决方案解决了,即已存在指定主键的行。对我来说似乎并非如此。我尝试用双引号替换字符串中的所有单引号,但出现了同样的问题。

我正在尝试通过执行以下操作将一行插入到我创建的 SQLite 数据库的设置表中:

db.execSQL("DROP TABLE IF EXISTS "+Settings.SETTINGS_TABLE_NAME + ";");
db.execSQL(CREATE_MEDIA_TABLE);
db.execSQL(CREATE_SETTINGS_TABLE);
Cursor c = getAllSettings();
//If there isn't already a settings row, create a row full of defaults
if(c.getCount()==0){
    ContentValues cv  = new ContentValues();
    cv.put(Settings.SETTING_UNIQUE_ID, "'"+Settings.uniqueID+"'");          
    cv.put(Settings.SETTING_DEVICE_ID, Settings.SETTING_DEVICE_ID_DEFAULT);
    cv.put(Settings.SETTING_CONNECTION_PREFERENCE, Settings.SETTING_CONNECTION_PREFERENCE_DEFAULT);
    cv.put(Settings.SETTING_AD_HOC_ENABLED, Settings.SETTING_AD_HOC_ENABLED_DEFAULT);
    cv.put(Settings.SETTING_SERVER_ADDRESS, Settings.SETTING_SERVER_ADDRESS_DEFAULT);
    cv.put(Settings.SETTING_RECORDING_MODE, Settings.SETTING_RECORDING_MODE_DEFAULT);
    cv.put(Settings.SETTING_PREVIEW_ENABLED, Settings.SETTING_PREVIEW_ENABLED_DEFAULT);
    cv.put(Settings.SETTING_PICTURE_RESOLUTION_X, Settings.SETTING_PICTURE_RESOLUTION_X_DEFAULT);
    cv.put(Settings.SETTING_PICTURE_RESOLUTION_Y, Settings.SETTING_PICTURE_RESOLUTION_Y_DEFAULT);
    cv.put(Settings.SETTING_VIDEO_RESOLUTION_X, Settings.SETTING_VIDEO_RESOLUTION_X_DEFAULT);
    cv.put(Settings.SETTING_VIDEO_RESOLUTION_Y, Settings.SETTING_VIDEO_RESOLUTION_Y_DEFAULT);
    cv.put(Settings.SETTING_VIDEO_FPS, Settings.SETTING_VIDEO_FPS_DEFAULT);
    cv.put(Settings.SETTING_AUDIO_BITRATE_KBPS, Settings.SETTING_AUDIO_BITRATE_KBPS_DEFAULT);
    cv.put(Settings.SETTING_STORE_TO_SD, Settings.SETTING_STORE_TO_SD_DEFAULT);
    cv.put(Settings.SETTING_STORAGE_LIMIT_MB, Settings.SETTING_STORAGE_LIMIT_MB_DEFAULT);

    this.db.insert(Settings.SETTINGS_TABLE_NAME, null, cv);
}

CREATE_SETTINGS_TABLE 字符串定义如下:

private static String CREATE_SETTINGS_TABLE = "CREATE TABLE IF NOT EXISTS " + Settings.SETTINGS_TABLE_NAME + "("
+ Settings.SETTING_UNIQUE_ID + " TEXT NOT NULL PRIMARY KEY, "
+ Settings.SETTING_DEVICE_ID + " TEXT NOT NULL , "
+ Settings.SETTING_CONNECTION_PREFERENCE + " TEXT NOT NULL CHECK("+Settings.SETTING_CONNECTION_PREFERENCE+" IN("+Settings.SETTING_CONNECTION_PREFERENCE_ALLOWED+")), "
+ Settings.SETTING_AD_HOC_ENABLED + " TEXT NOT NULL CHECK("+Settings.SETTING_AD_HOC_ENABLED+" IN("+Settings.SETTING_AD_HOC_ENABLED_ALLOWED+")), "
+ Settings.SETTING_SERVER_ADDRESS + " TEXT NOT NULL, "
+ Settings.SETTING_RECORDING_MODE + " TEXT NOT NULL CHECK("+Settings.SETTING_RECORDING_MODE+" IN("+Settings.SETTING_RECORDING_MODE_ALLOWED+")), "
+ Settings.SETTING_PREVIEW_ENABLED + " TEXT NOT NULL CHECK("+Settings.SETTING_PREVIEW_ENABLED+" IN("+Settings.SETTING_PREVIEW_ENABLED_ALLOWED+")), "
+ Settings.SETTING_PICTURE_RESOLUTION_X + " TEXT NOT NULL, "
+ Settings.SETTING_PICTURE_RESOLUTION_Y + " TEXT NOT NULL, "
+ Settings.SETTING_VIDEO_RESOLUTION_X + " TEXT NOT NULL, "
+ Settings.SETTING_VIDEO_RESOLUTION_Y + " TEXT NOT NULL, "
+ Settings.SETTING_VIDEO_FPS + " TEXT NOT NULL, "
+ Settings.SETTING_AUDIO_BITRATE_KBPS + " TEXT NOT NULL, "
+ Settings.SETTING_STORE_TO_SD + " TEXT NOT NULL CHECK("+Settings.SETTING_STORE_TO_SD+" IN("+Settings.SETTING_STORE_TO_SD_ALLOWED+")), "
+ Settings.SETTING_STORAGE_LIMIT_MB + " TEXT NOT NULL )";

但是,当我执行插入时,我总是得到:

03-19 19:37:36.974: ERROR/Database(386): Error inserting server_address='0.0.0.0' storage_limit='-1' connection='none' preview_enabled='0' sd_enabled='1' video_fps='15' audio_bitrate='96' device_id='-1' recording_mode='none' picture_resolution_x='-1' picture_resolution_y='-1' unique_id='000000000000000' adhoc_enable='0' video_resolution_x='320' video_resolution_y='240'
03-19 19:45:34.284: ERROR/Database(446): android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed

似乎我的插入中的所有列都不为空。该行的主键必须是唯一的,因为它是表中唯一的行。因此,我唯一能想到的是我的 CHECK 条件不成立。以下是我正在使用的预定义字符串:

public static final String SETTING_UNIQUE_ID = "unique_id";

public static final String SETTING_DEVICE_ID = "device_id";
public static final String SETTING_DEVICE_ID_DEFAULT = "'-1'";

public static final String SETTING_CONNECTION_PREFERENCE = "connection";
public static final String SETTING_CONNECTION_PREFERENCE_3G = "'3g'";
public static final String SETTING_CONNECTION_PREFERENCE_WIFI = "'wifi'";
public static final String SETTING_CONNECTION_PREFERENCE_NONE = "'none'";
public static final String SETTING_CONNECTION_PREFERENCE_ALLOWED = SETTING_CONNECTION_PREFERENCE_3G+","+SETTING_CONNECTION_PREFERENCE_WIFI+","+SETTING_CONNECTION_PREFERENCE_NONE;
public static final String SETTING_CONNECTION_PREFERENCE_DEFAULT = SETTING_CONNECTION_PREFERENCE_NONE;

public static final String SETTING_AD_HOC_ENABLED = "adhoc_enable";
public static final String SETTING_AD_HOC_ENABLED_ALLOWED = TRUE+","+FALSE;
public static final String SETTING_AD_HOC_ENABLED_DEFAULT = FALSE;

public static final String SETTING_SERVER_ADDRESS = "server_address";
public static final String SETTING_SERVER_ADDRESS_DEFAULT = "'0.0.0.0'";

public static final String SETTING_RECORDING_MODE = "recording_mode";
public static final String SETTING_RECORDING_MODE_VIDEO = "'video'";
public static final String SETTING_RECORDING_MODE_AUDIO = "'audio'";
public static final String SETTING_RECORDING_MODE_PICTURE = "'picture'";
public static final String SETTING_RECORDING_MODE_NONE = "'none'";
public static final String SETTING_RECORDING_MODE_ALLOWED = SETTING_RECORDING_MODE_VIDEO+","+SETTING_RECORDING_MODE_AUDIO+","+SETTING_RECORDING_MODE_PICTURE+","+SETTING_RECORDING_MODE_NONE;
public static final String SETTING_RECORDING_MODE_DEFAULT = SETTING_RECORDING_MODE_NONE;

public static final String SETTING_PREVIEW_ENABLED = "preview_enabled";
public static final String SETTING_PREVIEW_ENABLED_ALLOWED = TRUE+","+FALSE;
public static final String SETTING_PREVIEW_ENABLED_DEFAULT = FALSE;

public static final String SETTING_PICTURE_RESOLUTION_X = "picture_resolution_x";
public static final String SETTING_PICTURE_RESOLUTION_X_DEFAULT = "'-1'";

public static final String SETTING_PICTURE_RESOLUTION_Y = "picture_resolution_y";
public static final String SETTING_PICTURE_RESOLUTION_Y_DEFAULT = "'-1'";

public static final String SETTING_VIDEO_RESOLUTION_X = "video_resolution_x";
public static final String SETTING_VIDEO_RESOLUTION_X_DEFAULT = "'320'";

public static final String SETTING_VIDEO_RESOLUTION_Y = "video_resolution_y";
public static final String SETTING_VIDEO_RESOLUTION_Y_DEFAULT = "'240'";

public static final String SETTING_VIDEO_FPS = "video_fps";
public static final String SETTING_VIDEO_FPS_DEFAULT = "'15'";

public static final String SETTING_AUDIO_BITRATE_KBPS = "audio_bitrate";
public static final String SETTING_AUDIO_BITRATE_KBPS_DEFAULT = "'96'";

public static final String SETTING_STORE_TO_SD = "sd_enabled";
public static final String SETTING_STORE_TO_SD_ALLOWED = TRUE+","+FALSE;
public static final String SETTING_STORE_TO_SD_DEFAULT = TRUE;

public static final String SETTING_STORAGE_LIMIT_MB = "storage_limit";
public static final String SETTING_STORAGE_LIMIT_MB_DEFAULT = "'-1'";

public static final String SETTING_CLIP_LENGTH_SECONDS = "clip_length";
public static final String SETTING_CLIP_LENGTH_SECONDS_DEFAULT = "'300'";

有人知道会发生什么吗?我很困惑。提前致谢。


看来 android put(string,string) 方法必须已经在你的值字符串周围附加引号...一旦我取出我在值字符串周围输入的手动引号(但将它们保留在“允许”中) ") 字符串我传递给 CHECK,问题解决了。

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

Android SQLiteConstraintException:错误代码19:约束失败 的相关文章

  • Android 滚动分页

    Android 操作系统有可以实现滚动分页的功能吗 Edit滚动分页是指像主屏幕上一样的分页 您可以左右滑动并转到下一页或上一页 您可以在 android git kernel org 上查看 Launcher 的源代码作为示例 查找名为
  • Android ImageButton 在 Activity 中运行良好。它在片段中不起作用

    我正在尝试转换布局 使其包含片段 其中一个视图是具有侦听器的 ImageButton 该代码作为 Activity 运行良好 但作为 Fragment 会出现麻烦 第一个问题是我无法使用 findViewById 但我能够在这里找到答案并使
  • 有没有办法有一个屏蔽数字输入字段?

    我正在 Android 上创建一个 HTML5 应用程序 对于这个特定场景 我们有一个用于信用卡安全代码的输入字段 我们希望强制输入字段仅包含数字并被屏蔽 我没有运气搜索这个特定的案例 从我自己研究 尝试中可以看出 这不能纯粹通过 HTML
  • android中.so文件的实际用途是什么? [复制]

    这个问题在这里已经有答案了 我想在我的应用程序中实现类似聊天的环聊 我一直在使用 opentok 库 我在其中看到了 libopentok so 文件 谁能告诉我 libopentok so 文件的确切用法是什么 在Android中 我们可
  • 如何使用 ArrayAdapter

    ArrayList
  • Android - 如何获取文本视图中字符的坐标

    是否可以从 Android 中的 TextView 中的字符获取 x 坐标 我不是在寻找 TextView 本身的坐标 我需要 TextView 中最后一个字符的坐标 多行 提前致谢 Java解决方案 以下是如何获得x and y特定字符的
  • Android HTTP-post AsyncHttpClient

    public void postLoginData AsyncHttpClient myClient new AsyncHttpClient RequestParams params1 new RequestParams params1 p
  • ViewPagerIndicator:TabPagerIndicator 不可见

    我现在正在为 viewpageinderdicator 苦苦挣扎 当我使用 TitlePageIndicator 时 一切正常 但是当我尝试使用 TabPageIndicator 时我看不到它 它不会出现在层次结构视图中 我尝试了很多东西
  • Android:TelephonyManager 类

    我不明白为什么 API 文档中这么写TelephonyManager类是public 但是当我尝试创建一个实例时 它说它不是公共类 并且无法从包中访问 我看到它也说使用Context getSystemService Context TEL
  • 尝试使用 Facebook ID 获取 Facebook 图像时获取空位图

    这是我正在使用的代码 String imageURL Bitmap bitmap null imageURL http graph facebook com fbID picture type try bitmap BitmapFactor
  • Eclipse Oxygen - 该项目未构建,因为其构建路径不完整

    我刚刚安装了 Eclipse Oxygen 并尝试在工作台中打开现有项目 但收到此错误 该项目未构建 因为其构建路径不完整 不能 找到 java lang Object 的类文件 修复构建路径然后尝试 建设这个项目 我尝试右键单击该项目 转
  • 如何使用Multipart将图像上传到php服务器

    我一直很头疼 如何将图像上传到服务器 这对我来说是新任务 但对我来说很困惑 我在 stackoverflow 上搜索并用谷歌搜索 但我遇到了问题 我的意图是从 SD 卡上传照片并从相机拍照并上传到服务器 在ios中 这个任务已经完成 在io
  • JaCoCo 显示 0% 覆盖率,即使所有测试均已通过

    我在下面写了一些测试用例androidTest目录 我正在使用 androidx testInstrumentationRunner androidx test runner AndroidJUnitRunner 添加的依赖项 androi
  • 从前台服务的活动中释放内存

    我有一个带有前台服务和一项活动的应用程序 该服务可以在启动时自行启动 也可以从 Activity 中启动 我注意到当服务在启动时自行启动时 内存使用量约为 3MB 一旦我打开该 Activity 内存使用量就会跃升至约 9mB 一旦 Act
  • 安卓浮动键盘

    是否可以通过编程方式更改键盘的位置 我正在开发一个图腾应用程序 如果键盘停靠在底部 则很难使用 我尝试创建一个扩展 InputMethodService 的自定义键盘 并且我能够更改按键的布局 但我无法更改键盘的视图位置 快捷键 https
  • 如何使 Edittext 大小保持不变?安卓

    我知道使 Edittext 左侧的文本 消失 以保持单行的属性 singleLine true 但我的问题是 当我在显示视图之前填充编辑文本时 在这种情况下 我的编辑文本都超出了屏幕 有任何想法吗 谢谢 这是填充空的 Edittext 时得
  • androidx.navigation.fragment.NavHostFragment 无法从 xml 文件访问

    我正在尝试使用带有底部导航视图的 androidx 导航 因此 当我在 xml 文件中放置带有 android name androidx navigation fragment NavHostFragment 的片段时 它会给我一个错误
  • Android Lollipop:将应用程序小部件添加到主屏幕时启动器崩溃

    添加小部件时 启动器在 Android Lollipop 上崩溃 并显示以下消息 在以前的 Android 版本上运行良好 编辑 这只发生在横向方向 12 16 12 35 10 208 E AndroidRuntime 960 java
  • 未捕获的引用错误:cordova 未定义

    这是我的 HelloPlugin js 文件 var HelloPlugin callNativeFunction function success fail resultType return cordova exec success f
  • 对于双核手机,availableProcessors() 返回 1

    我最近购买了一部 Moto Atrix 2 手机 当我尝试查看手机中的处理器规格时 Runtime getRuntime availableProcessors 返回 1 proc cpuinfo 也仅包含有关处理器 0 的信息 出于好奇

随机推荐

  • 如何使用 LTPA 令牌中的信息

    考虑以下设置 部署在 Websphere Application Server 上的 Web 应用程序 6 1 如果重要的话 该应用程序将通过 webseal 反向代理进行访问 webseal 负责身份验证并传递 LTPA 令牌作为有效身份
  • jQuery mouseenter/mouseleave html()-交换问题

    我有以下 Javascript jQuery 函数 function addEventHandler div mouseenter function this html Over mouseleave function this html
  • 在 SSL 模式下在 nginx 后面运行时,Omniauth 和 open_id 与 Google 损坏

    Rails 3 0 12 最新的omniauth 我可以连接到Google并获取用户的电子邮件地址 但后来我在 SSL 模式下在 nginx 后面运行相同的 Rails 应用程序 但它失败并显示 Google 页面 The page you
  • 如何控制 Pulumi 中的资源创建顺序

    我正在尝试创建一些资源 并且需要强制执行某种创建顺序 例如创建一个aws s3 Bucket用于在将日志用作输入之前存储日志aws cloudfront Distribution 使用 Pulumi 时如何控制资源创建顺序 一般来说 Pul
  • 将 hgrc 文件签入 Mercurial

    我有一个项目 使用 Mercurial 进行版本控制 使用 SCons 进行构建 使用 google test 来编写单元测试 hgrc 文件挂钩预提交并运行 SCons 来构建项目并运行单元测试 有没有办法 签入 hgrc 文件的一部分
  • 如何显示资源可绘制列表[重复]

    这个问题在这里已经有答案了 我想在列表中显示所有资源可绘制对象 以便用户可以选择一个 有没有办法循环遍历所有 R drawable 项目 这样我就不必将它们硬编码到我的程序中 使用可绘制类上的 getFields 方法 您可以迭代整个可绘制
  • Jquery 依赖下拉框填充 - 如何

    我有依赖的下拉框 如下面的场景所示 有人可以建议如何使用 JQuery Javascript 实现结果吗 设想 HH1
  • 在 PowerShell 版本 2 中将字符串转换为字节数组

    我想做的是使用 SHA1 UTF 8 加密 然后使用 base64 编码和密码字符串值 然而 我需要先进行加密 然后再进行编码 但我却反过来做了 这是代码 Create Input Data enc system Text Encoding
  • 如何从 SQL 二进制字段获取单个字节

    我在 SQL Server 中有一个二进制字段 我想在 SQL 函数中一次读取一个字节 在代码中我将使用字节数组 SQL 中有等效的吗 我用谷歌找不到任何东西 SUBSTRING 函数应该足够了 一个简单的例子 假设表 MyTable 的列
  • 使用 jquery/javascript 增加点击时的 CSS 亮度颜色?

    因此 如果我有一个文本 Click Me to Brighten 它具有某种深绿色十六进制颜色 如 00801a 的CSS颜色属性 我想将其设置为当我单击它时 它会使其变为浅绿色 同样 如果它是某种蓝色 单击它会使它变浅蓝色 基本上我想知道
  • 可可:框架和边界有什么区别?

    UIView及其子类都具有以下属性frame and bounds 有什么不同 The bounds of an UIView http developer apple com iPhone library documentation UI
  • 适用于 Java、Python、Ruby、Node.JS 和 PHP 的开放支付网关库

    我正在寻找支持许多不同支付处理器 API 的通用开源支付库 换句话说 我想开发一个使用单一支付处理 API 的应用程序 但能够轻松地在支付网关之间切换 例如 Authorize Net Payflow Pro Braintree PayPa
  • 信号器程序集加载问题 OWIN

    我在尝试加载类时收到此错误Microsoft AspNet SignalR Owin集会 执行离开后抛出异常Configuration中的方法startup cs 我已经注册了一个全局异常处理程序来尝试捕获异常 但它没有被捕获 public
  • 警报显示使用已弃用的 HREF 而没有绝对 URL

    Facebook 开发者页面中的消息提醒我的网站当前正在使用以下已弃用的功能 社交插件 Like Button Like Box 中没有绝对 URLhref范围 此问题必须在 2013 年 7 月之前解决 我猜它正在谈论 喜欢 的 data
  • TDirect2DCanvas 速度慢还是我做错了什么?

    在寻找替代 GDI 的替代品时 我试图测试 Delphi 的 2010TDirect2D画布Windows 7 中的性能 我通过使用 Direct2D 绘制一条巨大的折线来测试它 结果速度慢得离谱 即使数据量比我使用 GDI 运行相同测试的
  • Instagram API 不返回关注者

    我已通过 Instagram 进行身份验证 并且获得了具有范围的访问令牌follower list 然后我尝试获取我的关注者列表 https api instagram com v1 users self followed by acces
  • 未知的指令类型“toctree”。 Pycharm 出错,但 index.html 有效

    在 PyCharm 中工作时 我在 Sphinx 中创建的文档的预览模式显示 System Message ERROR 3
  • “Where like”子句使用 2 列的串联值与雄辩

    我有一个查询 在多个列中搜索一个术语 其中之一必须是全名 我已将姓名和姓氏分开 因此在搜索时必须连接这两个值 我现在只有搜索名字 我如何将连接添加到姓氏 我正在调查突变体 但我不知道这是否是正确的方法 public function sea
  • 初学者的 C 套接字编程

    我刚刚开始学习套接字编程 发现它非常有趣 目前我正在制作服务器和客户端在同一台计算机上因此我可以拥有IP地址作为环回地址 127 0 0 1一切似乎都运行良好 但现在我正在考虑拥有两台计算机并做这件事 我有以下问题 假设一台计算机是服务器
  • Android SQLiteConstraintException:错误代码19:约束失败

    我已经看到了有关此异常的其他问题 但所有这些问题似乎都通过解决方案解决了 即已存在指定主键的行 对我来说似乎并非如此 我尝试用双引号替换字符串中的所有单引号 但出现了同样的问题 我正在尝试通过执行以下操作将一行插入到我创建的 SQLite