我在Unity项目中使用sqlite数据库,我需要使用Join语句创建一个新表,例如
string
sql = "create table ResultTable2 as select name_journal from Journal INNER JOIN Points.name_point ON Points.id_journal = Journal.id_journal";
command = new SqliteCommand(sql, ActiveConnection);
command.ExecuteNonQuery();
还有一个例外:“找不到表Points.name_point”
那我该怎么做呢?我了解到为此,您可以使用linq到sql,但是不确定它是否可以在Unity中使用。 最终,我需要将此表转换为XML文件。
我尝试过:
var w = "select j.name_journal, p.name_point,w.name_workplace, w.percent_workplace from Journal j INNER JOIN Points p ON p.id_journal = j.id_journal INNER JOIN Workplace w ON w.id_point = p.id_point";
var ds = new DataSet();
using (var da = new SqliteDataAdapter(q, sqc))
{
da.Fill(ds);
}
ds.WriteXml(@"d:\data.xml");
,但是xml文件为空。 也许我没有正确提出要求。 还是在Unity中不可能做而我需要使用Xamarin?
答案 0 :(得分:0)
您不能联接一列,只能联接一个表。您必须从联接表中选择列。考虑到您的第二个查询,我觉得您已经知道这一点,只是犯了一个错误。我还建议您使用StringBuilder对象来构建查询。
StringBuilder sqlBuilder = new StringBuilder();
sqlBuilder.AppendLine("CREATE TABLE ResultTable2 AS");
sqlBuilder.AppendLine(" SELECT Journal.name_journal, Points.name_point");
sqlBuilder.AppendLine(" FROM Journal");
sqlBuilder.AppendLine(" INNER JOIN Points ON Points.id_journal = Journal.id_journal");
command = new SqliteCommand(sqlBuilder.ToString(), ActiveConnection);
command.ExecuteNonQuery();