c# - 打开数据库中的不同表

标签 c# mysql

所以我在名为“MyDB”的MySQL数据库中有3个不同的表,里面的表是table1、table2、table3。这是我的代码,用于查询数据库中的 3 个表,但它不断中断,我不明白为什么。为 Google Maps Javascript API v3 创建此代码。

private static IEnumerable<HeatMapDataElement> QueryHeatMapDataFromDatabase(string reqDate, string reportType)
    {
        const string connectionString = "connection_credentials";
        var ds = new DataSet();
        var elements = new List<HeatMapDataElement>();
        var conn = new MySqlConnection(connectionString);
        MySqlCommand cmd;
        var da = new MySqlDataAdapter();
        conn.Open();
        try
        {
            cmd = conn.CreateCommand();
            cmd.CommandTimeout = 30;
            cmd.CommandText =
                "select RequestHour, longitude, latitude, count(requesttime) as Weight from MyDB.table1 || MyDB.table2 || MyDB.table3 where method=@ReportType and requestdate = date(@RequestDate) and longitude is not null and latitude is not null and requesthour is not null group by RequestHour, longitude, latitude";
            cmd.Parameters.AddWithValue("@ReportType", reportType);
            cmd.Parameters.AddWithValue("@RequestDate", reqDate);
            da.SelectCommand = cmd;
            da.Fill(ds);

            if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
            {
                elements.AddRange(from DataRow dr in ds.Tables[0].Rows
                                  select new HeatMapDataElement()
                                      {
                                          Latitude = Double.Parse(dr["latitude"].ToString()), Longitude = Double.Parse(dr["longitude"].ToString()), Hour = int.Parse(dr["RequestHour"].ToString()), Weight = int.Parse(dr["Weight"].ToString())
                                      });
            }
        }
        catch (Exception ex)
        {
            throw ex; //breaks here <-------
        }
        finally
        {
            conn.Close();
            da = null;
            cmd = null;
        }
        return elements.AsEnumerable();
    }

错误是:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 '|| 附近使用的正确语法。 MyDB.table2 其中 method='Table 2' 和 requestdate =' 在第 1 行

最佳答案

您混淆了 C# 代码和 SQL 代码。 AFAIK管道运算符只能在mysql中用于连接列而不是表,即使如此,默认情况下它也是禁用的,所以我认为你需要使用INNER JOIN

如果您正在读取 3 个表,您将在 3 个表之间进行内部联接,如下所示:

 select * from table1 inner join table2 on table1.key = table2.key

关于c# - 打开数据库中的不同表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25121885/

相关文章:

c# - 什么是 pfxblob

C# 和 VB.NET LDAP 搜索不同?

javascript - 如果值大于 0,则使用 AJAX 或 XMLHttprequest 将数据保存到 MySQL 数据库

mysql - 通过后缀选择具有相同列的所有表并将它们合并到新表中

php - 无法将mysql表中的数据打印到下拉列表中

C# GridView 垂直和水平交替背景颜色

c# - 线程可以做什么基于任务的异步模式 (TAP) 和带有任务(或 Task<T>)的任务并行性 (TPL) 无法做到的事情?

c# - 无法将此查询转换为 lambda 表达式

PHP/MySQL 查询 : Rows Not Being Inserted

php - 在 mysql 中使用 php 查询日期