【问题标题】:Records are not inserting into sqlite database记录未插入 sqlite 数据库
【发布时间】:2013-02-27 13:40:39
【问题描述】:

我在 Sqlite 数据库中有两个表。第一个表的列是 _id as primary key, note date and _cid as foreign key 。第二个表的列是_cid as primary key, Category

一些默认记录,我在创建第二个表时已插入。

两个表都已成功创建。 但是当我在第一个表中插入记录时没有插入。没有得到任何类型的异常。请指导我。

Table 1

private static final String DB__CREATE1 = "CREATE TABLE " + TABLE_NAME_CATE + "(_cid INTEGER PRIMARY KEY AUTOINCREMENT, "+ "Category TEXT not null);";

Table 2

private static final String DB__CREATE2 = "CREATE TABLE " + TABLE_NAME + "(_id INTEGER PRIMARY KEY AUTOINCREMENT, "+ "Note TEXT not null, "+ "NoteDateTime TEXT not null, " + "_cid INTEGER not null, " + "FOREIGN KEY(_cid) REFERENCES Categories(_cid));";

插入数据的方法

publicvoidinsertData1( long c_id, String discription, String nDate){

    ContentValues  contentValues=new ContentValues();
    contentValues.put("note", discription);
    contentValues.put("date", nDate);
    contentValues.put("_cid", c_id);
    open();
    database.insert("TABLE_NAME", null,contentValues);
    close();
}`

调用语句

dbConnector.insertData1(1, textview.getText().toString(), nDateTime.toString());

【问题讨论】:

  • 您需要发布您的代码。用您提供的内容无法调试您的问题。
  • 那么,你有什么尝试??
  • 您可以使用 Log.i("tag", e); 打印该异常;
  • 我已经放了一些代码@Phil

标签: android sqlite


【解决方案1】:

如果没有完整的代码,真的很难指出确切的问题。我可以看到之前发布的答案很合乎逻辑。 但是,根据我使用多表数据库的经验,事情非常繁琐,并且不像我们仅使用单个表那样工作。

我有一个类似的问题,我曾经创建了一个多表数据库,但我仍然不知道是什么问题,因为它创建了表,但它无法插入。 后来我按照这个程序:https://stackoverflow.com/a/5899110/1351867 成功了!

所以我的猜测是,您可能对数据库适配器或助手类有问题,并且可能在两个表之间存在混淆。 如果您仍然遇到问题,请发布您的完整代码。

【讨论】:

    【解决方案2】:

    对于第一个表应该是这样的:

        private static final String DB__CREATE1 = "CREATE TABLE " + TABLE_NAME_CATE + "( "+_cid+ "INTEGER PRIMARY KEY AUTOINCREMENT, "+Category +"TEXT not null);";
    

    但是如果没有看到完整的代码,很难真正了解它。您是否为“类别”声明了变量(是否为字符串)?

    你的第二个也是一样,你声明的变量是“_id”、“Note”、“NoteDateTime”等吗?

    编辑

    好的,我看到了一些我不明白的东西。如上所述,第一个表由 id、注释日期和外键组成。但这应该是这样的:

        private static final String DB__CREATE1 = "CREATE TABLE " + TABLE_NAME_CATE + "(_id INTEGER PRIMARY KEY AUTOINCREMENT, "+ "date TEXT not null,"+ " Category TEXT not null);";
    

    您将 _cid 而不是 _id 传递到第一列,但您忘记了日期列。

    然后,在您的第二个表中,您引用“Categories(_cid)”,但它不应该是您的第一个表中声明的“Category(_cid)”吗?

    【讨论】:

    • 不,我直接放列名&Category是String @Opiatefuchs
    猜你喜欢
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    相关资源
    最近更新 更多