【问题标题】:SQL query debugging required需要 SQL 查询调试
【发布时间】:2011-01-15 18:36:20
【问题描述】:

我正在使用 C# 在 winforms 中工作。这是我的代码

query = "SELECT max(Appointment_Time) FROM Appointments WHERE (Appointment_Status = 'D')";
dset = db.GetRecords(query,"Appointments");
ctime_Label.Text = dset.Tables["Appointments"].Rows[0]["Appointment_Time"].ToString();

db.GETRecords 是为我提供 sql-services 的类的函数,只是返回给我一个数据集。我不断收到错误“'Appointment_Time' 列不属于约会表”,这很愚蠢

  • 当我插入它的值时 工作正常。
  • 当我不使用时 max(Appointment_Time) 函数是 工作正常

这里的问题是什么。我认为这与 max() 函数有关。对此有任何建议或替代方案

【问题讨论】:

    标签: c# winforms debugging dataset sql


    【解决方案1】:

    当您在 SELECT 子句中应用函数时,服务器必须为结果列选择一个名称,这通常反映了函数正在执行的操作 - 类似于 max(Appointment_Time)。用作函数参数的字段似乎是“隐藏的”。这就是为什么 Appointment_Time 字段在您的案例中对调用代码不可见。

    您应该使用AS 指定您希望在 SQL 中调用聚合字段的内容,例如:

    SELECT max(Appointment_Time) AS Max_Appointment_Time
    FROM Appointments WHERE (Appointment_Status = 'D')
    

    然后在调用代码中将该字段称为Max_Appointment_Time。如果您愿意,可以使用与源字段相同的名称。

    【讨论】:

    • 谢谢你,男孩......我选择了 FCFS 先到先得的基础
    【解决方案2】:

    在 SQL Server 中运行查询,看看你会得到什么。

    现在试试:

     SELECT max(Appointment_Time) as A_Time FROM Appointments WHERE (Appointment_Status = 'D')";
    

    然后

     ctime_Label.Text = dset.Tables["Appointments"].Rows[0]["A_Time"].ToString();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-17
      • 1970-01-01
      • 2011-04-03
      • 2021-07-22
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多