记录未插入sqlite数据库

时间:2013-02-27 13:40:39

标签: android sqlite

我在Sqlite数据库中有两个表。第一个表的列为_id primary keynote date_cidforeign key。第二个表格的列_cidprimary keyCategory

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

两个表都已成功创建。 但当我将记录插入第一张表中而不插入时。没有得到任何类型的例外。请指导我。

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));";

插入数据的方法

public void insertData1( 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());

2 个答案:

答案 0 :(得分:0)

对于第一个表格应如下所示:

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

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

对于你的第二个,你的声明变量为“_id”,“Note”,“NoteDateTime”等?

修改

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

    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)”吗?

答案 1 :(得分:0)

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

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

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

相关问题