Индекс вне диапазона после выполнения SQL
Привет, у меня есть встроенный запрос SELECT statement, написанный на VB. Когда я пытаюсь запустить его, он выдает мне сообщение об ошибке IndexOutOfRangeException. Я попытался отладить его и обнаружил сообщение об ошибке после ExecuteReader ().
Сначала я подумал, что это связано с тем, что мое возвращаемое значение равно NULL, но ошибка все еще сохраняется после того, как я добавил IsDBNull в свои коды.
Ниже приведены мои коды:
Try cnSql = New SqlConnection(SQL_CONNECTION_STRING) cnSql.Open() strSQL = "SELECT ISNULL(MIN(SH.shipping_start_date), GETDATE()) AS StartDate " strSQL = strSQL + "FROM Shipping AS SH INNER JOIN Working AS WK ON SH.shipping_id = WK.shipping_id " strSQL = strSQL + "WHERE WK.woNo = '" + number + "'" cmSql = New SqlCommand(strSQL, cnSql) readerSQL = cmSql.ExecuteReader() If readerSQL.Read() Then If Not IsDBNull(readerSQL.Item("shipping_start_date")) Then woStartDate = readerSQL.Item("shipping_start_date") End If Else ShipStartDate = DateTime.Now End If readerSQL.Close() cnSql.Close() cmSql.Dispose() cnSql.Dispose() Catch ex As SqlException MsgBox(ex.Message, MsgBoxStyle.Critical, "SQL Error!") Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical, "General Error!")'error happen here
Что я уже пробовал:
1. Добавлено IsDBNull в мои коды, чтобы отфильтровать нулевые значения, возвращаемого из БД.
2. попытался выполнить запрос непосредственно в SQL Server без каких-либо ошибок.
ChauhanAjay
Измените код с
Если нет IsDBNull(readerSQL. Item ("shipping_start_date")) Затем
woStartDate = readerSQL. Item ("shipping_start_date")
Конец, Если
к
Если нет IsDBNull(readerSQL. Item ("StartDate")) Затем
woStartDate = readerSQL. Item ("StartDate")
Конец, Если
Jamie888
Да, сэр, спасибо за ваш совет, это действительно та самая "shipping_start_date", которая вызвала ошибку. Спасибо.
ChauhanAjay
Добро пожаловать