SQLite Join命令问题Unity

时间:2018-12-04 14:08:00

标签: c# xml linq sqlite unity3d

我在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?

1 个答案:

答案 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();