如何防止在sqlite数据库中插入重复值(如果重复则覆盖)

2023-11-23

我在数据库中创建了两个表,在两个表中我同时插入值,现在我想做的是,我想在第二个表中插入记录,但条件是,如果有两个相同的记录记录然后我只想插入一条记录而不是重复值,在第二个表中有两个字段,一个是id第二个是category,当用户插入两个相同的类别时,我只想插入一个条目,下面是我的代码,它无法正常工作,它插入所有记录接受重复值。

public long InsertCat(String idd, String cat) 
  { 
     try 
       {
        SQLiteDatabase db;
        long rows = 0;
        db = this.getWritableDatabase(); 
        ContentValues Val = new ContentValues();
        Val.put("IDD", idd); 
        Val.put("Category", cat);
        Cursor c = db.rawQuery("SELECT * FROM " + TABLE_CATEGER + " WHERE Category='"+cat+"'",null);
        while(c.moveToNext())
        {
            if(c.getString(0).equals(cat))
            {
                flag=true;
            }
        }           
        if(flag==true)
        {
          rows=db.update(TABLE_CATEGER, Val, "Category='"+cat+"'"  , null);     
          System.out.print(rows);
          db.close();
        }
        if(flag==false)
        {
            rows = db.insert(TABLE_CATEGER, null, Val);
            System.out.print(rows);             
            db.close();
        }
        return rows; // return rows inserted.
         } catch (Exception e) {
         return -1;
         }
        }

把你所有的价值观都放进去ContentValues然后调用这个writableDatabase

db.insertWithOnConflict(tableName, null, contentValues,SQLiteDatabase.CONFLICT_REPLACE);

EDIT:

那么你所需要的只是这部分代码

    SQLiteDatabase db;
    long rows = 0;
    db = this.getWritableDatabase(); 
    ContentValues Val = new ContentValues();
    Val.put("IDD", idd); 
    Val.put("Category", cat);
    rows = db.insertWithOnConflict(tableName, null, contentValues,SQLiteDatabase.CONFLICT_REPLACE);

insertWithOnConflict当发现重复行时,方法遵循最后一个参数作为反应算法。为了找到重复行,主键必须发生冲突。如果所有这些都满足,那么该行肯定会被替换:-/如果不是其他地方出了问题..

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

如何防止在sqlite数据库中插入重复值(如果重复则覆盖) 的相关文章

  • Android 2.2 SDK - Droid X 相机活动无法正常完成

    我注意到我在 Droid X 上调用的默认相机活动与我的 Droid 和 Nexus One 上的默认相机活动看起来不同 在 Droid 和 Nexus One 上选择 确定 后 活动将完成 Droid X 有一个 完成 按钮 它将带您返回
  • TypedArray 的 getResourceId 方法

    我正在阅读有关的文档获取资源Id https developer android com reference android content res TypedArray html getResourceId int 20int 方法 它说
  • 强制用户在 Android 中的 EditText 中输入内容

    我的活动中有几个编辑文本 我希望我的用户在提交表单之前正确输入 我该怎么做 我还有旋转器和 RadioGroup 按钮 你可以加验证在提交按钮上单击 private boolean validateFields int yourDesire
  • 使用库来维护免费/付费的应用程序版本

    维护免费 付费应用程序版本的共识似乎是使用库 并从每个活动中设置一个标志 以从代码库中获取不同的功能 这有多安全 据我了解 一个人可以root他们的手机 获取APK 并且可以对其进行反编译 即使代码被混淆 也不难看出该应用程序是带有标志的包
  • 安卓无法玩ogg

    有人知道这是什么意思吗 ogg使用phonegap is Media播放 它使用MediaPlayer 05 26 15 41 50 007 1160 3631 E AudioFlinger no more track names avai
  • Youtube 退出全屏模式 TextView 可见性问题

    我正在全屏模式下播放视频 当我单击后退按钮时 我可以退出全屏模式 但无法显示我在全屏情况下隐藏的 TextView 要在全屏模式下隐藏 textView 我使用以下代码 Override public void onInitializati
  • 以编程方式更新 Android 中的联系人姓名和电话号码

    我创建一个应用程序来读取 更新 删除联系人详细信息 这是更新联系人姓名和电话号码的问题 有人可以帮助我吗 我该怎么做 我正在使用以下代码 但它不起作用 Override public View onCreateView LayoutInfl
  • 尝试在模拟器上安装第二个 flutter 应用程序时出错

    我创建了一个简单的 flutter 应用程序并在 android 模拟器上运行它 效果还不错 现在我创建了另一个 当我尝试在模拟器上运行它时 我得到 Error ADB exited with exit code 1 adb failed
  • Android Studio更新到1.5后Gradle错误

    今天我已将 Android Studio 更新到 v1 5 我的 libgdx 项目在这次更新之前运行良好 现在我收到此错误消息 Error Unable to load class org gradle mvn3 org sonatype
  • 如何防止布局的方向改变,而不是整个屏幕/活动的方向改变

    我需要一个子布局 可以是任何布局 例如FrameLayout or RelativeLayout 忽略方向变化并始终保持横向 但不是它的父级或任何其他兄弟布局 视图 它们应该相应地改变它们的方向 因此 我不能使用setRequestedOr
  • 以编程方式将 TextView 添加到主屏幕小部件

    我想以编程方式将文本视图控件添加到我的主屏幕小部件 在下面的示例中 我使用 TextView 填充 Linearlayout 但是这里应该如何使用 RemoteView 它只接受 xml 资源布局作为参数 public class MyWi
  • JavaDoc 在 Android 项目中不起作用

    我在 Ubuntu 10 04 上使用 Eclipse 3 5 2 进行 Android 开发 我安装了 来自 Ubuntu 存储库的 Sun JDK Eclipse 3 5 2 经典 来自 eclipse org 解压到 opt ecli
  • BottomSheetDialog get Behavour 始终返回 null

    我与底部表单对话框我必须获得行为才能设置setBottomSheetCallback 来处理一些事情 As 谷歌说 https android developers googleblog com 2016 02 android suppor
  • Vimeo 视频在 Android 6 设备上停止播放

    我正在尝试在我的应用程序中播放 Vimeo 的视频 问题是在 Android 6 设备上 视频会在一定时间后停止播放 在 API 较低的设备上一切正常 时间取决于质量 对于下面提供的网址的视频 播放一定分钟 1 到 3 视频质量有多低 播放
  • Android Studio 将音乐文件读取为文本文件,如何恢复它?

    gameAlert mp3是我的声音文件 运行应用程序时 它询问我该文件不与任何文件类型关联 请定义关联 我选择TextFile错误地 现在我的音乐文件被读取为文本文件 我如何将其转换回music file protected void o
  • Android - 如何更改 TimePicker 中的文本颜色?

    我正在使用 TimePicker 到 LinearLayout 中 背景颜色 黑色 但是 我看不到 TimePicker 中的数字 并且我需要在布局中将背景颜色设置为黑色 如何更改 TimePicker 中的 textColor 我已经尝试
  • 在Android Studio中更改项目主题?

    我使用浅色主题创建了一些项目 现在我想将其更改为深色 但我不知道该怎么做 顺便说一句 我不是问如何在代码中做到这一点 只是问如何更改项目的默认主题 在 AndroidManifest xml 的 application 标签下 您可以设置您
  • 按字母顺序过滤 Firestore 数据以对 Google Cloud 中的文档读取进行分类/减少

    基于这样的事实Cloud Firestore 不支持全文搜索 https firebase google com docs firestore solutions search到目前为止 我决定问这个question https stack
  • 在android中跟踪FTP上传数据?

    我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A
  • Android:如何检测手机设置中的语言已更改

    我如何检测我的手机语言是否已更改 例如 Facebook 应用程序将向我们宣布 please wait we preparing your language i used myString Locale getDefault getDisp

随机推荐

  • 如何使用运行时定义的比较器定义有序映射/集?

    这类似于如何将自定义比较器函数与 BTreeSet 一起使用 但是就我而言 直到运行时我才会知道排序标准 可能的标准很广泛并且不能被硬编码 想想像按到目标的距离排序 or 按有效负载中的特定字节排序或其组合 创建地图 集合后 排序标准不会更
  • Chrome 丢失 cookie

    我的实时网站上出现错误 但我在开发环境中没有看到该错误 而且似乎只在 Chrome 中发生 我四处寻找解决方案 发现仅与 Auth cookie 有关的问题 实际上我过去提出过关于 chrome 和 auth cookie 的问题 但这是不
  • ARKit – 使用世界光线而不是屏幕点进行光线投射

    我想实现类似的目标ARCore的光线投射方法它采用世界空间坐标中的任意射线而不是屏幕空间点 List
  • json 字符串可以包含 HTML 标签吗?

    考虑这是我的 json 字符串 Mat id 2 Mat Name Steel Measurement mm Description Steel 我可以像这样在这个 json 字符串中添加 HTML 标签吗 Mat id 2 Mat Nam
  • 过早优化的实用规则[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 看来这句话 过早的优化 是
  • RMarkdown PDF“LaTeX3 错误:错误变量”

    我已经通过 RMarkdown 创建 PDF 报告几个月了 但是今天在新机器上安装 MikTex R 以及 rmarkdown 和 tidyverse 软件包后 我在尝试编织 PDF 时收到以下错误消息 C PROGRA 2 Pandoc
  • YouTube API v3 每次都不断请求授权

    我正在使用 YouTube api v3 来检索视频列表 示例如下 https developers google com youtube v3 code samples php retrieve my uploads 我打开页面 应用程序
  • NodeJS 原生鼠标和键盘绑定 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我一直在寻找一个支持鼠标和键盘监听和执行的原生nodejs模块 我找到了这个 https npmjs org package mouse但源代码看起
  • 在 Windows Server 2012 上注册 ASP.NET 4.5 的替代方法

    当我运行 WCF 服务时 出现 MIME 未注册错误 我用过这个link来解决这个问题 之后 我开始收到另一个错误 要求我向 IIS 注册 ASP NET 框架 所以我用了 aspnet regiis 命令 但它显示以下错误 Microso
  • D3 Crossfilter 基本示例

    我刚刚接触 D3 非常喜欢交叉过滤库 我想生成类似的东西 但我没有使用航班数据 而是采用以下格式的 CSV 数据 行 列 值 我只想要一个显示值的直方图 以及一张按值字段排序的表格 很难理解他们的例子中发生了什么 有人可以建议或展示一个非常
  • YouTube 嵌入在 Firefox 中不起作用

    我嵌入了三个 Youtube 视频 它们在除 Firefox 之外的所有浏览器中都能完美运行 尝试在服务器端清除缓存 在本地清除cookies和缓存 尝试了18台不同的计算机 尝试了Windows 7 Windows 8 Linux Ubu
  • 观察 NSMutableArray 的插入/删除

    一个类有一个类型为 NSMutableArray 的属性 和实例变量 带有合成访问器 通过 property 如果您使用以下命令观察该数组 myObj addObserver self forKeyPath theArray options
  • INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN 有什么区别? [复制]

    这个问题在这里已经有答案了 有什么区别INNER JOIN LEFT JOIN RIGHT JOIN and FULL JOIN in MySQL SQL JOIN 子句用于组合两个或多个表中的行 基于他们之间的共同领域 SQL 中有不同类
  • 在Perl中,如何获得多个集合的笛卡尔积?

    我想用 Perl 进行排列 例如我有三个数组 big tiny small 然后我有 red yellow green 并且 apple pear banana 如何得到 big red apple big red pear etc sma
  • LZ4库解压数据上限大小估计

    我在用着LZ4库以及解压缩数据时 int LZ4 decompress safe const char source char dest int compressedSize int maxDecompressedSize 我想估计最大解压
  • 混杂模式下的数据包套接字仅接收本地流量

    我有一个创建的套接字socket PF PACKET SOCK RAW htons ETH P ALL 我使用以下方法将其设置为混杂模式 struct ifreq ifr strncpy char ifr ifr name interfac
  • 获取 will_paginate 在第一页上定义自定义偏移量

    我正在我的网站上建立一个新闻版块铁路网站它使用将分页用于分页 现在我想知道如何指定自定义偏移量对于带有 will paginate 的第一页 像这样的东西 featured news Post first news Post offset
  • 如何计算矩阵中给定值的元素数量?

    有谁知道如何计算一个值在矩阵中出现的次数 例如 如果我有一个 1500 x 1 矩阵M 向量 存储工作日 1 7 的值 我如何计算存储了多少个星期日 1 星期一 2 星期六 7 M 看一下确定并计算数组的唯一值 或者 计算出现的次数5 简单
  • HttpContext.Current.Response 和 Page.Response 有什么区别?

    我正在解决一组安全页面上的缓存问题 并意识到需要修改所有响应的标头 当我整理解决方案时 我想知道 HttpContext Current Response 和 Page Response 之间的区别以及何时应在应用程序中使用每个对象 Tha
  • 如何防止在sqlite数据库中插入重复值(如果重复则覆盖)

    我在数据库中创建了两个表 在两个表中我同时插入值 现在我想做的是 我想在第二个表中插入记录 但条件是 如果有两个相同的记录记录然后我只想插入一条记录而不是重复值 在第二个表中有两个字段 一个是id第二个是category 当用户插入两个相同