#vb.net
#vb.net
Вопрос:
Вот мой код:
'for clicking the datagridview
Private Sub DataGridView1_CellContentClick_1(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
Try
MySqlConnection.ConnectionString = "Server=localhost; User=root;Password='';Database=lrbhams;"
MySqlConnection.Open()
Dim state3 As String = "select boarder_fname, boarder_contact, guardian, guardian_number from boarders_info"
Dim command As New MySqlCommand(state3, MySqlConnection)
'command.Connection.Open()
command.ExecuteNonQuery()
MySqlConnection.Close()
If DataGridView1.Rows(e.RowIndex).Cells(2).Value Then
TextBox1.Text = DataGridView1.Rows(e.RowIndex).Cells(2).Value
ElseIf DataGridView1.Rows(e.RowIndex).Cells(4).Value Then
TextBox1.Text = DataGridView1.Rows(e.RowIndex).Cells(4).Value
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
''
End Sub
Для отправки сообщения:
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim message As String
'Dim reader As MySqlDataReader
message = RichTextBox1.Text
If send_sms.SerialPort.PortName = send_sms.portName Then
send_sms.SerialPort.Write("AT" amp; vbCrLf)
send_sms.SerialPort.Write("AT CMGF=1" amp; vbCrLf)
send_sms.SerialPort.Write("AT CMGS=" amp; Chr(34) amp; TextBox1.Text amp; Chr(34) amp; vbCrLf)
send_sms.SerialPort.Write(message amp; Chr(26))
MsgBox("Text Message Successfully Send !!!")
Try
Dim connectString As String
Dim conn As New MySqlConnection
Dim reader As MySqlDataReader
Dim command As MySqlCommand
'Dim mysqlQuery As String
connectString = "server=localhost;user=root;database=lrbhams"
conn = New MySqlConnection(connectString)
Dim query As String
conn.Open()
query = "INSERT into admin_log_attendance (action,contact_number, date) VALUES ('" amp; RichTextBox1.Text amp; "','" amp; TextBox1.Text amp; "', '" amp; Date.Today amp; "')"
command = New MySqlCommand(query, conn)
reader = Command.ExecuteReader
conn.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End If
End Sub
Комментарии:
1. Вы бы сразу написали лучший код, если бы избегали,
Catch ex As Exception
особенно если вы тогда только делаетеMsgBox(ex.Message)
.2. В чем собственно проблема? Пожалуйста, предоставьте ПОЛНОЕ и ЯСНОЕ объяснение проблемы.
3. @jmcilhinney, вы уверены, что ваш код продолжается до этого раздела? send_sms.SerialPort.PortName = send_sms.PortName. Попробуйте это: MessageBox. Показать («сообщение», «заголовок», MessageBoxButtons. Да)
4. Пожалуйста, включите опцию Strict. Это процесс, состоящий из двух частей. Сначала для текущего проекта — В обозревателе решений дважды щелкните Мой проект. Выберите Compile слева. В раскрывающемся списке Option Strict выберите ВКЛ. Второй для будущих проектов — Перейдите в меню Сервис -> Параметры -> Проекты и решения -> VB Defaults. В раскрывающемся списке Option Strict выберите ВКЛ. Это избавит вас от ошибок во время выполнения.
5. @Mary Спасибо. Я попробую это
Ответ №1:
MySqlConnection
является классом в MySql.Data.MySqlClien
пространстве имен t. Это не статический класс, поэтому его экземпляр должен быть создан с ключевым словом New. Вы не можете задавать свойства или вызывать методы в самом классе. Вы должны создать экземпляр класса. Наилучшей практикой является использование `Using…Прекратите использование блоков для объектов базы данных. Это гарантирует, что объекты базы данных будут закрыты и удалены, даже если произойдет ошибка.
Select
Оператор не является запросом без запроса. Инструкции Insert, Update и Delete можно запускать с command.ExecuteNonQuery
но не Select
с ними. Select
Запрос может быть запущен с .ExecuteScalar
, если ожидается один фрагмент данных или .ExecuteReader
если ожидается несколько столбцов и / или строк.
Вы не можете просто выполнить Select
команду и ожидать, что что-то произойдет. Я подозреваю, что вы хотите отобразить данные в своей сетке, поэтому давайте заполним DataTable
(представление возвращенных записей в памяти) с помощью .Load
метода, а затем привяжем его к DataGridView
.
Нет необходимости закрывать соединение, потому что блок Using закроет его.
Если вы вызываете .ToString
класс, который не переопределяет метод, вы просто получите полное имя класса. Exception
Класс предоставляет Property
вызываемый Message
, который вы можете использовать.
Заполнение DataGridView
будет происходить отдельным методом, который вы можете вызвать из Form.Load
.
Теперь, когда в DataGridView
файле есть данные, вы можете нажать на него, и CellContentClick
сработает событие. Я надеюсь, что Cell (2) и Cell (4) логические значения, потому что это единственное, почему ваше If
утверждение будет работать. Необходимость кода преобразования и .ToString
станет очевидной, как только вы включите опцию Strict. (Смотрите Мой комментарий)
На данный момент этого достаточно. Учитывая все это и параметр Strict, вы должны быть в состоянии исправить вторую часть вашего кода.
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
RetrieveRecordsForDataGridView()
End Sub
Private Sub RetrieveRecordsForDataGridView()
Dim dt As New DataTable
Try
Using cn As New MySqlConnection("Server=localhost; User=root;Password='';Database=lrbhams;")
Dim state3 As String = "select boarder_fname, boarder_contact, guardian, guardian_number from boarders_info"
Using command As New MySqlCommand(state3, cn)
cn.Open()
dt.Load(command.ExecuteReader())
End Using
End Using
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
If CBool(DataGridView1.Rows(e.RowIndex).Cells(2).Value) Then
TextBox1.Text = DataGridView1.Rows(e.RowIndex).Cells(2).Value.ToString
ElseIf CBool(DataGridView1.Rows(e.RowIndex).Cells(4).Value) Then
TextBox1.Text = DataGridView1.Rows(e.RowIndex).Cells(4).Value.ToString
End If
End Sub