SQlite - Android - 外键语法

2024-07-04

我一直在尝试让外键在我的 Android SQLite 数据库中工作。我尝试过以下语法,但它给了我强制关闭:

private static final String TASK_TABLE_CREATE = "create table "
            + TASK_TABLE + " (" + TASK_ID
            + " integer primary key autoincrement, " + TASK_TITLE
            + " text not null, " + TASK_NOTES + " text not null, "
    + TASK_DATE_TIME + " text not null, FOREIGN KEY ("+TASK_CAT+") REFERENCES "+CAT_TABLE+" ("+CAT_ID+"));";

有什么想法我可能做错了什么吗?如果您需要查看其他表结构,那么我可以,它只是第二个表的一个非常简单的结构,带有 ID 和名称。

Edit:

这是错误:

03-13 13:42:35.389: 错误/AndroidRuntime(312):原因: android.database.sqlite.SQLiteException: 国外未知专栏“taskCat” 关键定义:创建表提醒 (_id 整数主键 自动增量,task_title 文本不是 null,注释文本不为空, 提醒日期时间文本不为空, 外键(taskCat)参考 类别(_id));


你必须定义你的TASK_CAT首先列,然后在其上设置外键。

private static final String TASK_TABLE_CREATE = "create table "
        + TASK_TABLE + " (" 
        + TASK_ID + " integer primary key autoincrement, " 
        + TASK_TITLE + " text not null, " 
        + TASK_NOTES + " text not null, "
        + TASK_DATE_TIME + " text not null,"
        + TASK_CAT + " integer,"
        + " FOREIGN KEY ("+TASK_CAT+") REFERENCES "+CAT_TABLE+"("+CAT_ID+"));";

您可以在 sqlite 外键上找到更多信息doc http://www.sqlite.org/foreignkeys.html.

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

SQlite - Android - 外键语法 的相关文章

  • Android 上的 DGPS 校正

    我正在开发一个项目 旨在利用 Android 手机和附近站点的 GPS 功能 使用 RTK DGPS 技术来计算更精确的定位 厘米 到目前为止 我还没有看到有人说他们实际上成功地执行了类似的任务 除了 GPSmaster 谁不解释一下如何
  • 在 Android studio 中看不到“font”资源类型

    我正在研究新的 Android O 功能 其中一项新功能是现在应用程序可以直接将字体添加到res文件夹 按照安卓文档 https developer android com preview features working with fon
  • React Native Android 本地镜像

    我有这个
  • 如何处理单个 Activity 的多个 Fragment

    我最近开始考虑为我的 Android 设备开发应用程序 我产生这种兴趣的原因是我在玩几个arduinos时想到了一个好主意 让它们与我的手机进行通信 就像我在arduino本身上测量的任何值的接口一样 现在 我可以采取简单的方法并使用公共资
  • 不适当的阻塞方法调用,但挂起函数“withContext”只能从协程或另一个挂起函数调用

    在我的服务中 我需要致电onStartCommand一些需要的方法withContext Dispatchers IO 反而CoroutineScope Dispatchers IO like url URL pokemon linkIma
  • Y'UV420p(和 Y'V12 或 YV12)到 RGB888 转换

    我正在尝试在 android 中显示 yuv 视频文件 我有一些正在使用的 yuv 视频文件 该视频yuv文件video1 https www dropbox com s wjofvdf9k9bglhx rawData1 yuv dl 0
  • Android 变量 OnClick 监听器

    有没有一种方法可以为许多按钮提供 1 个 onClick Lister 我可以在其中抛出一个 case 语句来根据单击的按钮执行操作 我知道我可以为 100 个按钮创建 100 个不同的侦听器 但我必须认为我可以创建一些漂亮的变量来用更少的
  • SQLite PRAGMA table_info(table) 不返回列名(在 C# 中使用 Data.SQLite)

    我使用以下示例代码并希望以某种方式获取 sqlite3 数据库的列名称 using System using System Data SQLite namespace Program class Program static void Ma
  • 数据库设计中外键真的有必要吗?

    据我所知 外键 FK 用于帮助程序员以正确的方式操作数据 假设程序员实际上已经以正确的方式这样做了 那么我们真的需要外键的概念吗 外键还有其他用途吗 我在这里错过了什么吗 外键有助于在数据级别强制执行引用完整性 它们还可以提高性能 因为它们
  • 在Android中单击按钮后使布局出现动画

    我正在尝试为登录屏幕实现一个简单的动画效果 这是场景 1 默认情况下将显示一些文本和登录按钮 2 单击登录按钮后 将从下到上出现一个新的框架布局 此布局将提示用户输入用户名和密码 我可以制作一个动画 该动画将从一个父级覆盖到另一个父级 在这
  • Android Studio 0.2.7 使用 Gradle 构建异常

    我正在从 Eclipse 迁移到 Android Studio 尽管由于 Android Studio 仍处于 预览 模式 但我正在缓慢且增量地迁移 自从更新到最新版本的 Android Studio 0 2 7 以来 我在默认构建过程中遇
  • 重命名由 android 10 中的应用程序创建的 Mediastore 文件。在 Android API 30 上工作,但在 API 29 中显示错误

    在这里 这个 renameFile 函数在 Android API 30 中工作 但是 它在 Android API 29 中不起作用 并显示如下错误 java lang IllegalArgumentException 不允许移动不属于明
  • 如何用多个手指在画布上绘图

    我正在使用安卓Canvas创建绘图应用程序的类 这是我第一次尝试使用 Canvas 类 到目前为止 我使用的代码工作正常 绘图工作正常 但我在这段代码中意识到 它允许用户仅用一根手指进行绘画 我的意思是说 如果用户使用多于一根手指在画布上绘
  • 使用带有大量透明区域的 png 时内存消耗会大幅增加

    我正在使用一个button with a PNG背景我的应用程序中的 CopyToClipboard 函数 在各种片段中使用了大约 6 7 次 自从图像应该小为了我的目的 我通过放入额外的透明区域围绕图像 这样我就可以增加按钮大小可点击区域
  • SQlite - Android - 外键语法

    我一直在尝试让外键在我的 Android SQLite 数据库中工作 我尝试过以下语法 但它给了我强制关闭 private static final String TASK TABLE CREATE create table TASK TA
  • 让 Android 源中的应用程序编译到 system/app 而不是 data/app 中?

    我正在从源代码编译 Android ROM 并且我有几个可以编译的应用程序 但会编译到手机上的数据 应用程序中 它们可以通过手机设置卸载 我希望它们不可能从手机中卸载 并编译到系统 应用程序而不是数据 应用程序中 有什么建议吗 编辑 错别字
  • 以编程方式将项目添加到相对布局

    我一直在到处寻找这个问题的答案 我是 Android 新手 尝试通过 java 而不是 xml 以编程方式将项目添加到相对布局 我创建了一个测试类来尝试一下 但项目不断堆叠而不是正确格式化 我现在只想将一个 TextView 放在另一个下面
  • Android 嵌套片段问题“java.lang.IllegalStateException:活动已被销毁”

    您可能知道 Android 支持嵌套片段 也是通过 API 级别 17 的支持库实现的 所以基本上我正在尝试将嵌套片段添加到 ViewPager 的片段之一中 并熟悉这一新的好功能 在第一次应用程序启动时 一切都按预期工作 即我可以添加子片
  • appcompat 在操作栏中显示进度导致 NPE

    将我的 SDK 更新到所有最新的 Android 5 0 后 我无法使用 appcompat 中 ActionBar 中内置的进度条 我已经完成了所有通常的修复 将 supportRequestWindowFeature 调用移至 setC
  • android finish() 方法不会从内存中清除应用程序

    我有一个活动 我调用 finish 方法 但该活动没有从内存中清除 调用 finish 后 我看到 onDestroy 方法已成功执行 并且我清除了其中的所有变量和内容 应该从内存中清除它还是android的工作方式 据我了解 活动的生命周

随机推荐

  • 在 Xamarin.Forms 中添加方向更改布局

    我需要实现的是 在将屏幕从纵向更改为横向时向现有页面添加布局 我已经成功地使用检测方向变化void OnSizeAllocation 双倍宽度 双倍高度 但我无法为此事件添加布局 我的示例 C 代码是 public class MyLayo
  • Struts2 JSON 拦截器未填充我的 Action 类

    我正在开发一个 Web 应用程序 其中客户端 JavaScript 库 ExtJS 使用 JSON 请求负载向支持 Struts 的后端发送请求 我的问题是我不知道如何将变量从有效负载获取到我的 Action 类中 我通过使用日志语句知道前
  • 在类型中找不到枚举大小写开关

    有人可以帮我解决这个问题吗 我有以下内容public enum public enum OfferViewRow case Candidates case Expiration case Description case Timing ca
  • 如何延迟显示/隐藏引导工具提示?

    我无法使 Twitter 引导工具提示的数据延迟属性正常工作 我使用它的方式如下 这是我的使用方法 a href with delay a 但我没有看到显示 隐藏有任何延迟 有什么想法吗 最后我让它与数据属性一起工作 data delay
  • 如何在 setup.py 中运行 Makefile?

    我需要编译ICU http icu project org使用它自己的构建机制 因此问题是 我怎样才能运行一个Makefilesetup py 显然 我只希望它在构建过程中运行 而不是在安装时运行 我通常使用的方法是覆盖有问题的命令 fro
  • 应用已被 Google Play 删除,因为旧版本不符合新的后台位置政策

    我调整了位置数据的权限和使用 并将其发布在新版本 v10004 中 不幸的是 我的应用程序仍然被删除 因为以前的版本不符合新的后台位置规定 如我从 Google 收到的邮件中所述 受影响的 APK App Bundle v10003 我找不
  • 在bash脚本中输入MySQL密码

    我有一个 bash 脚本 需要在 MySQL 中执行一些操作 到目前为止我有这样的事情 bin sh read p Enter your MySQL username sqluname read sp Enter your MySQL pa
  • CLASSPATH 中存在未使用的 JAR 文件的影响

    我在这里阅读了很多有关可用工具的问答unusedJAR 例如 loosejar http code google com p loosejar 类路径助手 http classpathhelper sourceforge net 我的问题是
  • 当更改来自另一个函数时,onchange 事件不会触发

    我有一个输入文本 它从 Javascript 函数 带有倒计时的计时器 获取他的值 我想在输入文本为 0 时引发一个事件 所以我使用更改事件监听器 不幸的是 当更改来自 javascript 函数时 它似乎不会引发该事件 即使更改来自 Ja
  • 通过“this->member”访问c++成员类比隐式调用“member”更快/更慢

    经过我们的朋友谷歌搜索后 我无法得到以下观点的明确看法 我习惯这样称呼班级成员this gt 即使不需要 我发现它更明确 因为它在维护一些带有大量变量的繁重算法时很有帮助 当我正在研究一种应该优化的算法时 我想知道是否使用this gt 是
  • 使用 Python 3 在 Mac 上没有名为“_tkinter”的模块

    我正在尝试使用 Tkinter 作为 GUI 将我的脚本捆绑到 app 中 而执行捆绑的包装器是 Platypus 当我去运行该应用程序时 我收到此错误 Traceback most recent call last File Users
  • 使用 Robomongo 连接到 Meteor

    我在 Windows 上的本地虚拟机上运行 Meteor 可以使用 IP 地址 192 168 56 111 访问该虚拟机 当我使用 Robomongo 时 我使用此 IP 地址并将其指向端口 3001 但无法连接 我应该期待它连接吗 如果
  • 如何获得 firebird 数据库上的独占锁以执行架构更改?

    更具体地说 我正在使用 firebird 2 1 和 Visual Studio 的 DDEX Provider 并且我正在使用 c 工作 我遇到一种情况 我试图将模式更改从 C 应用到数据库 以 更新 我的数据库 在此过程中 我从 fir
  • ValueError:在 ECB 模式下数据必须与块边界对齐

    我正在使用以下代码在 ECB 模式下尝试 aes 128 加密 from Crypto Cipher import AES key abcdefghijklmnop cipher AES new key encode utf8 AES MO
  • Google 登录使用新的 GoogleSignInOptions 获取访问令牌

    我的 Android 应用程序当前使用 GoogleAuthUtil 来登录用户并获取access token它被传递到后端 下面的代码片段显示创建 GoogleApiClient 并使用 GoogleAuthUtil 获取令牌 mGoog
  • 优化xstream的加载速度

    当我尝试从 XML 文件执行加载时 我感觉 xstream 加载速度达不到我的要求 为了 一个有 10k 条目的 数据库 需要几分钟 以下是我用来序列化的整个数据结构 列表的大小 符号和代码 将为 大约 10k 条目 有什么方法我可以尝试
  • 使用 QProcessEnvironment 更改 cmd.exe 的 PATH 环境变量

    我想从设置了特定路径的 Qt 应用程序启动 cmd exe 我在 QProcessEnvironment 中插入 Path 并将该环境设置为 QProcess 然后我开始分离 cmd 在命令提示符上 路径与调用应用程序的路径相同 而不是我刚
  • CRM2011工作流程:如果工作流程条件中使用的字段在工作流程启动后更新,会发生什么情况?

    示例 假设我有一个工作流程 会在保修结束日期前 2 天发送电子邮件 此工作流在实体 创建 时触发 step 1 wait condition process timeout lt warrantyendate 2 after wait se
  • 使用 Microsoft Excel 绘制 CDF 图表

    我不太确定是否可以在这里或上问这个问题超级用户 https superuser com 我想知道如何绘制CDF http en wikipedia org wiki Cumulative distribution function从我的Ex
  • SQlite - Android - 外键语法

    我一直在尝试让外键在我的 Android SQLite 数据库中工作 我尝试过以下语法 但它给了我强制关闭 private static final String TASK TABLE CREATE create table TASK TA