Java 如何在Android中向包含外键的表插入数据

Java 如何在Android中向包含外键的表插入数据,java,android,sqlite,Java,Android,Sqlite,我有一个字典数据库,想在MyList表中插入单词。但是单词必须存在于单词表中,因为MyList有外键。我已经写了一段代码,但它返回空对象。这有什么不对?还是有别的办法?请帮忙 数据库 db.execSQL(“如果不存在,则创建表\“Words\”(\n”+ \t\“Id\\t注册表项不为空主键自动递增,\n+ \t\“Name\”t文本\n+ “\t\”表示“\t文本\n”+ ");"); db.execSQL(“创建表\“MyList\”(\n)+ \t\“Id\\t注册表项不为空,\n+ \

我有一个字典数据库,想在MyList表中插入单词。但是单词必须存在于单词表中,因为MyList有外键。我已经写了一段代码,但它返回空对象。这有什么不对?还是有别的办法?请帮忙

数据库

db.execSQL(“如果不存在,则创建表\“Words\”(\n”+
\t\“Id\\t注册表项不为空主键自动递增,\n+
\t\“Name\”t文本\n+
“\t\”表示“\t文本\n”+
");");
db.execSQL(“创建表\“MyList\”(\n)+
\t\“Id\\t注册表项不为空,\n+
\t\“Name\”t文本\n+
“\t”表示“\t文本,\n”+
“\t外键(\“Id\”)引用\“单词\”(\“Id\”)\n”+
");");
我的方法

公共字符串InsertWordToList(数据库连接数据,字符串kelime){
单词yeni=null;
SQLiteDatabase db=data.getWritableDatabase();
ContentValues=新的ContentValues();
串味精;
布尔布尔布尔=ifExists(kelime,db);
如果(bool){
msg=“kelime zaten var”;
}
否则{
yeni=FindWord(kelime,db);
if(yesni!=null){
Log.e(“yeni-id”,Integer.toString(yeni.getId());
value.put(“Id”,yeni.getId());
value.put(“Name”,yeni.getName());
value.put(“Mean”,yeni.getMean());
db.insertOrThrow(“MyList”,null,值);
msg=“kelime eklendi”;
}
else msg=“kelime databasede kayırlıdeğil”;
}
db.close();
返回味精;
}
公共单词FindWord(字符串kelime,SQLiteDatabase db){
单词w=null;
游标c=db.rawQuery(“从Name=?”的单词中选择*,新字符串[]{kelime});
while(c.moveToNext()){
w=新词(c.getInt(c.getColumnIndex(“Id”))
,c.getString(c.getColumnIndex(“名称”))
,c.getString(c.getColumnIndex(“平均”));
}
c、 close();
如果(w!=null){
返回w;}
否则返回null;
}
公共布尔值ifExists(字符串kelime,SQLiteDatabase db){
单词w=null;
游标c=db.rawQuery(“从Name=?”的单词中选择*,新字符串[]{kelime});
while(c.moveToNext()){
w=新词(c.getInt(c.getColumnIndex(“Id”))
,c.getString(c.getColumnIndex(“名称”))
,c.getString(c.getColumnIndex(“平均”));
}
c、 close();
如果(w!=null)返回true;
否则返回false;
}