我正在尝试在特定日期和特定时间显示可用的导师和房间。
我有三张桌子,课桌,房桌和辅导桌。我正在尝试下面的代码
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(); 我一直在db.Rdr上得到一个System.NullReferenceException,但对于所有其他查询来说,这是完全正常的。
我已经阅读了其他问题,并提出了这个解决方案,但不起作用。
发布于 2016-12-23 00:44:15
尝试添加另一个条件,以确保读取器具有可供读取的行:
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(); 发布于 2016-12-23 21:32:36
ExecuteNonQuery返回查询执行状态,具体地说,返回受影响的行数(来源: System.Data.Common.DbCommand),尝试使用ExecuteReader将删除您的NullReferenceException
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();
db.Rdr = cmd.ExecuteReader()
if (db.Rdr.HasRows)
{
while (db.Rdr.Read())
{
listBox1.Items.Add(db.Rdr);
}
}
db.Rdr.Close();https://stackoverflow.com/questions/41286416
复制相似问题