Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中修复SQLite查询?_C#_Mysql_Sql_.net_Sqlite - Fatal编程技术网

C# 如何在C中修复SQLite查询?

C# 如何在C中修复SQLite查询?,c#,mysql,sql,.net,sqlite,C#,Mysql,Sql,.net,Sqlite,我尝试创建一个datagridview查询。但是我在SQLite和 我不知道如何解决我的问题 string command3 = ""; for (int y = year1; y <= year2; y++) { if (y > year1) { command3 += " UNION "; } comman

我尝试创建一个datagridview查询。但是我在SQLite和 我不知道如何解决我的问题

        string command3 = "";
        for (int y = year1; y <= year2; y++)
        {
            if (y > year1)
            {
                command3 += " UNION ";
            }
            command3 += "SELECT 'Въведени' AS 'Въведени/Изчислени', Station AS '№ на станция', strftime('%Y',Dat) AS 'Година', 'НМ' AS 'НМ/СР/НГ', (SELECT vkolmin FROM hydmes WHERE Station= '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat)=01) AS 'Януари', (SELECT vkolmin FROM hydmes WHERE Station= '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat)=02) AS 'Февруари', (SELECT vkolmin  FROM hydmes WHERE Station= '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat)=03) AS 'Март', (SELECT vkolmin FROM hydmes WHERE Station= '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " strftime('%m',Dat)=04) AS 'Април', (SELECT vkolmin FROM hydmes WHERE Station= '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat)=05) AS 'Май', (SELECT vkolmin FROM hydmes WHERE Station= '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat)=06) AS 'Юни', (SELECT vkolmin FROM hydmes WHERE Station= '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat)=07) AS 'Юли', (SELECT vkolmin FROM hydmes WHERE Station= '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat)=08) AS 'Август', (SELECT vkolmin FROM hydmes WHERE Station= '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat)=09) AS 'Септември', (SELECT vkolmin FROM hydmes WHERE Station= '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat)=10) AS 'Октомври', (SELECT vkolmin FROM hydmes WHERE Station= '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat)=11) AS 'Ноември', (SELECT vkolmin FROM hydmes WHERE Station= '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat)=12) AS 'Декември'"
            + "FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y
            + "  UNION"
            + "  SELECT 'Изчислени', Station, strftime('%Y',Dat), 'НМ', (SELECT min(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 01 LIMIT 1), (SELECT min(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 02 LIMIT 1), (SELECT min(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 03 LIMIT 1), (SELECT min(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 04 LIMIT 1), (SELECT min(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 05 LIMIT 1), (SELECT min(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 06 LIMIT 1), (SELECT min(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 07 LIMIT 1), (SELECT min(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 08 LIMIT 1), (SELECT min(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 09 LIMIT 1), (SELECT min(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 10 LIMIT 1), (SELECT min(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 11 LIMIT 1), (SELECT min(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 12 LIMIT 1)"
            + "FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y
            + "  UNION"
            + "  SELECT 'Въведени', Station, strftime('%Y',Dat), 'СР', (SELECT vkolsre FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 01), (SELECT vkolsre FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 02), (SELECT vkolsre FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 03), (SELECT vkolsre FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 04), (SELECT vkolsre FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 05), (SELECT vkolsre FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 06), (SELECT vkolsre FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 07), (SELECT vkolsre FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 08), (SELECT vkolsre FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 09), (SELECT vkolsre FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 10), (SELECT vkolsre FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 11), (SELECT vkolsre FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 12)"
            + "FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y
            + "  UNION"
            + "  SELECT 'Изчислени', Station, strftime('%Y',Dat), 'СР', (SELECT avg(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 01 LIMIT 1), (SELECT avg(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 02 LIMIT 1), (SELECT avg(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 03 LIMIT 1), (SELECT avg(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 04 LIMIT 1), (SELECT avg(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 05 LIMIT 1), (SELECT avg(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 06 LIMIT 1), (SELECT avg(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 07 LIMIT 1), (SELECT avg(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 08 LIMIT 1), (SELECT avg(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 09 LIMIT 1), (SELECT avg(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 10 LIMIT 1), (SELECT avg(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 11 LIMIT 1), (SELECT avg(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 12 LIMIT 1)"
            + "FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y
            + "  UNION"
            + "  SELECT 'Въведени', Station, strftime('%Y',Dat), 'НГ', (SELECT vkolmax FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 01), (SELECT vkolmax FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 02), (SELECT vkolmax FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 3), (SELECT vkolmax FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 04), (SELECT vkolmax FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 05), (SELECT vkolmax FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 06), (SELECT vkolmax FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 07), (SELECT vkolmax FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 08), (SELECT vkolmax FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 09), (SELECT vkolmax FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 10), (SELECT vkolmax FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 11), (SELECT vkolmax FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 12)"
            + "FROM hydmes WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y
            + "  UNION"
            + "  SELECT 'Изчислени', Station, strftime('%Y',Dat), 'НГ', (SELECT max(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 01 LIMIT 1), (SELECT max(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 02 LIMIT 1), (SELECT max(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 03 LIMIT 1), (SELECT max(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 04 LIMIT 1), (SELECT max(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 05 LIMIT 1), (SELECT max(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 06 LIMIT 1), (SELECT max(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 07 LIMIT 1), (SELECT max(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 08 LIMIT 1), (SELECT max(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 09 LIMIT 1), (SELECT max(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 10 LIMIT 1), (SELECT max(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 11 LIMIT 1), (SELECT max(vkol) FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y + " and strftime('%m',Dat) = 12 LIMIT 1)"
            + "FROM hyddnev WHERE Station = '" + comboBox1.SelectedItem.ToString() + "' and strftime('%Y',Dat) = " + y;
        }
        command3 += "  group by strftime('%Y',Dat)";

        SQLiteDataAdapter insertDat3 = new SQLiteDataAdapter(command3, Connection);
            using (DataTable dt3 = new DataTable())
            {
                insertDat3.Fill(dt3);
                dataGridView1.DataSource = dt3.DefaultView;
            }

        }
错误是:

System.Data.SQLite.SQLiteException 0x80004005:SQL逻辑错误或strftime附近缺少数据库:语法错误

我有一个使用MySql数据库的应用程序,只是从其他应用程序复制这个查询,但SQLite语法与MySql不同


我不知道在哪里以及如何修复该查询。

对不起,我还不能发表评论,所以我会将此作为答案发布

首先,我同意上述意见。仅凭您提供的示例代码很难帮助您解决问题。其次,不要直接将字符串连接到查询,因为存在SQL注入的风险


话虽如此,我自己也遇到过类似的情况,我的方法是直接在查询窗口中调试/测试我的查询。我建议您将查询分开,由这些联合体连接,向它们提供实际值,然后逐个运行它们。如果一切正常,则一起运行查询。如果一切正常,那么问题一定出在连接上。我总是喜欢以分而治之的方式来处理我的问题,我喜欢分离并消除可能的原因。

你能做一个解释吗?我认为,从玩具数据库的SQLite命令行工具中包含一个转储,其中固定的查询演示了您想要实现的内容。此外,只使用SQL的查询也应该是其中的一部分。因此,您是否可以帮助我?为什么不拆分查询并尝试通过逐个执行来调试,这将有助于跟踪问题。我想我可能可以提供帮助。但如果没有mcve,这将需要不必要的努力。如果你需要我的帮助,请半途而废。此外,我还看到一些答案被否决,因为有人认为这个问题不好或离题。不提供mcve可能会触发对您的问题的看法。我对MCVE的要求和我认为MCVE相关的单独评论似乎表明其他人同意。如果您描述了您在制作mcve时遇到的问题,我可能也会对此提出建议。您需要做的第一件事是使用参数化查询,而不是连接字符串,除非您想冒SQL注入的风险。请理解,如果您还没有注释权限,请将注释写入答案中,在StackOverflow中是不受欢迎的。小心。但另一方面,为了保护你不受贬低:我认为这实际上是一个勇敢的回答。它符合StackOverflow的概念,为解决方案提供了一些见解和步骤,而不必给出完整的解决方案。感谢您让我知道。我只是想有所贡献。我下次回答时会记住这一点。