SQL C#预订系统3表在指定时间可用的导师/房间

时间:2016-12-22 15:22:18

标签: c# sql

我想在某个特定时间显示可用的导师和房间。

我有3个表课程表,房间表和教师表。我正在尝试下面的代码

create table A (id integer, wkt object);

我一直在db.Rdr上获得string sqlFormattedDate = DateTime.Today.ToString("yyyy-MM-dd HH:mm:ss.fff"); db.Cmd = db.Conn.CreateCommand(); db.Cmd.CommandText = "SELECT RoomNumber FROM RoomTBL WHERE RoomNumber NOT IN ( SELECT RoomNumber FROM LessonsTBL Where PupilID = " + 1 + " AND StartDate = '" + sqlFormattedDate + "')"; db.Cmd.ExecuteNonQuery(); while (db.Rdr.Read()) { listBox1.Items.Add(db.Rdr); } db.Rdr.Close(); ,但这对所有其他查询都完全正常。

我已经阅读了其他问题,我想出了这个无效的解决方案。

2 个答案:

答案 0 :(得分:0)

尝试添加其他条件以确保阅读器具有可供阅读的行:

    string sqlFormattedDate = DateTime.Today.ToString("yyyy-MM-dd HH:mm:ss.fff");
    db.Cmd = db.Conn.CreateCommand();
    db.Cmd.CommandText = "SELECT RoomNumber FROM RoomTBL WHERE RoomNumber NOT IN (SELECT RoomNumber FROM LessonsTBL Where PupilID = " + 1 + " AND StartDate = '" + sqlFormattedDate + "')";
    db.Cmd.ExecuteNonQuery();
    if (db.Rdr.HasRows)
    {
      while (db.Rdr.Read())
      {
        listBox1.Items.Add(db.Rdr);
      }
    }   
    db.Rdr.Close(); 

答案 1 :(得分:0)

ExecuteNonQuery返回查询执行状态,具体返回受影响的行数(source:System.Data.Common.DbCommand),尝试使用ExecuteReader删除你的NullReferenceException

attributes.get("grouplist").get().toString()