在SQL Server数据库上执行简单查询时没有错误或结果

本文关键字:有错误 结果 查询 简单 Server SQL 数据库 执行 | 更新日期: 2023-09-27 18:26:41

这是我使用SQL Server的第一种方法。我已将Access DB导出到SQL Server,并希望在我的应用程序中使用它。我已经将新的SQL DB添加到我的C#项目中,并用Sql替换了OleDB。我现在无法执行与Access中的本地DB完美配合的查询。

查询:

string query = @"SELECT SessionID, SemesterA, SemesterB, RoomID, SessionDate, SessionTimeStart, SessionTimeEnd" +
               " FROM [Session] " +
               " WHERE RoomID = @RoomID " +
               " AND SessionDate = getdate() ";

按照VS错误的指示,我已经用getdate()替换了Date(),但查询没有产生任何结果(应该返回一条记录,Access DB会返回)

我的房间选择表单代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AutoReg
{
    public partial class RoomSelect : Form
    {
        DataTable queryResult = new DataTable();
        public string RoomID;
        RoomActiveSession RoomActiveSessionForm = new RoomActiveSession();
        public RoomSelect()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            switch (listBox1.SelectedItem.ToString())
            {
                case "MB0302":
                    RoomID = listBox1.SelectedItem.ToString();
                    roomQuery();
                    break;
                case "MC1001":
                    RoomID = listBox1.SelectedItem.ToString();
                    roomQuery();
                    break;
                case "MC3203":
                    RoomID = listBox1.SelectedItem.ToString(); 
                    roomQuery();
                    break;
                case "MC3204":
                    RoomID = listBox1.SelectedItem.ToString();
                    roomQuery();
                    break;
            }
        }
        public void roomQuery()
        {
            string ConnStr = "Data Source=DUZY;Initial Catalog=AutoRegSQL;Integrated Security=True";
            SqlConnection MyConn = new SqlConnection(ConnStr);
            MyConn.Open();
            //SQL query that todays sessions for the given roomID
            string query = @"SELECT SessionID, SemesterA, SemesterB, RoomID, SessionDate, SessionTimeStart, SessionTimeEnd" +
               " FROM [Session] " +
               " WHERE RoomID = @RoomID " +
               " AND SessionDate = getdate() ";
            SqlCommand command = new SqlCommand(query, MyConn);
            command.Parameters.Add("RoomID", SqlDbType.Char).Value = RoomID;

            SqlDataAdapter adapter = new SqlDataAdapter(command);
            adapter.Fill(queryResult);
            if (queryResult.Rows.Count == 0)
            {
                MessageBox.Show("No active sessions today for the given room number");
                MyConn.Close();
            }
            else
            {
                RoomActiveSessionForm.SetDataSouce(queryResult);
                this.Hide();
                RoomActiveSessionForm.ShowDialog();
                MyConn.Close();
            }

        }
    }
}

当我运行该程序时,我收到一条消息"给定房间号今天没有活动会话",当查询没有结果时应该执行该消息,但我知道它应该返回一条记录)

在SQL Server数据库上执行简单查询时没有错误或结果

函数getdate()实际上返回一个datetime。尝试将其转换为日期:
AND SessionDate = cast(getdate() as date)

时间组件可能是问题所在,它阻止了日期和日期时间之间的匹配。