我在Sqlite数据库中有两个表。第一个表的列为_id
primary key
,note
date
和_cid
为foreign key
。第二个表格的列_cid
为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));";
插入数据的方法
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());
答案 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”等?
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 它有效!
所以我的猜测是,您可能遇到数据库适配器或帮助程序类的问题,并且可能在两个表之间混淆。 如果您仍然遇到问题,请发布完整的代码。