#mysql #vb.net
Вопрос:
Я пытаюсь объединить таблицы и загрузить данные с определенным значением из текстового поля, но это приводит к следующей ошибке: «Исключение типа» System.NullReferenceException» произошло в Boxing.exe но не был обработан в пользовательском коде
Дополнительная информация: Ссылка на объект не установлена на экземпляр объекта.»
Мой код:
Dim Joinloin As New MySqlCommand("SELECT boxno, specie, netweight, producttype, loin FROM loins, boxing WHERE loins.code = boxing.loin AND type = '" amp; Label9.text amp; "' ORDER BY loincode", conn.getConnection)
Я попытался запустить без «type = ‘» amp; Label9.text amp; «‘» и отлично работает.
Комментарии:
1. Очевидный ответ заключается в том, что Label9.text равен нулю.
2. Я думал так же, пока не дал значение по умолчанию из Свойств и из кода Label9.text = «Экспорт» и ничего, продолжает выдавать эту ошибку…
Ответ №1:
Поскольку «Тип» является зарезервированным словом в SQL, вам нужно изменить его в базе данных SQL и в запросе на что-то вроде «Тип» и повторить попытку.
Ответ №2:
Соединениям и командам необходимо вызывать методы Dispose, чтобы они могли освобождать неуправляемые ресурсы. Для этого они должны быть объявлены в том методе, в котором они используются. С помощью…Завершите использование блоков, обработайте объявление и Закройте/Утилизируйте.
Не объединяйте строки для построения операторов sq. Всегда используйте параметры.
Ваш синтаксис соединения вышел с последним милениумом. Я строил дикие догадки о том, какое поле принадлежит какому столу. Действительно ли существует поле под названием loincode?
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim dt = GetProductData(Label9.Text)
'Do something with the data table
End Sub
Private Function GetProductData(type As String) As DataTable
Dim dt As New DataTable
Using cn As New MySqlConnection("You connection string"),
cmd As New MySqlCommand("SELECT boxing.boxno, loins.specie, boxing.netweight, loins.producttype, boxing.loin
FROM boxing
JOIN loins ON boxing.loin = loins.code Where loins.[type] = @Type
ORDER BY boxing.loincode", cn)
cmd.Parameters.AddWithValue("@Type", type)
Using reader = cmd.ExecuteReader
dt.Load(reader)
End Using
End Using
Return dt
End Function