Некоторые проблемы с вашим кодом, которые я вижу ...
If verif() And chicken.InsertRooster(fname, lname, nume, ename) '...
Измените оператор If, чтобы использовать AndAlso
между условиями. Это приводит к короткому замыканию If, поскольку оно завершает работу, как только находит False
. Таким образом, функции вашей базы данных не будут выполняться, если verif
вернет False
.
If TextBoxfname.Text.Trim = "" Or TextBoxlname.Text.Trim = "" '...
Аналогично, OrElse
замкнет If, как только условие вернется True
.
Dim nume As Integer = TextBoxNume3.Text
Свойство .Text
для TextBox
является String
. Когда Option Strict
включен (и он должен быть включен), вы не можете присвоить String
переменной типа Integer
.
If verif() AndAlso chicken.InsertRooster(fname, lname, nume, ename) '...
и
Public Function InsertRooster(ByVal fname As String, ByVal lname As String, ByVal nume As String, '...
Вы не можете пройти и Integer
(nume
) до Function
, ожидающего String
(ByVal nume As String
). Я изменил объявление nume
на String
.
MsgBox("error")
Else
MsgBox("success")
Я думаю, что вы перевернули свои окна сообщений.
insertbreedenolboz1
insertbreedenolboz2
insertbreedenolboz3
Каждая функция выполняет одно и то же. Вы просто отправляете разные параметры. Удалите последние 2 и измените код своей кнопки, просто наберите insertbreedenolboz1
.
inserteno1
inserteno2
inserteno3
То же, что и выше. Удалите последние 2 и просто вызовите inserteno1
.
"INSERT INTO `rooster` (`entry_no`,`chicken`,`lb`,`oz`) VALUES (@eno,@ckn,@lb,@oz)"
Этот оператор вставки не будет работать, потому что у вас есть 5 полей, но только 4 параметра. Я действительно не могу это исправить, не зная больше, поэтому я просто удалил financer_F_id
.
Я избавился от всего, что есть db.Connection
, и использовал соединение, локальное для каждого метода, чтобы его можно было закрыть и удалить. , Строка подключения может быть изменена на уровне класса.
Ваши классы могут быть объединены в один DataAccess
класс. Создайте соединение для каждого метода, чтобы вы могли правильно закрыть и удалить соединение.
Проверьте типы данных всех ваших полей в базе данных. Было бы необычно хранить числа в виде строк.
Private Sub ButtonAdd_Click(sender As Object, e As EventArgs) Handles ButtonAdd.Click
Dim da As New DataAccess
Dim fname As String = TextBoxfname.Text
Dim lname As String = TextBoxlname.Text
Dim nume As String = TextBoxNume3.Text
Dim ename As String = TextBoxEntryname.Text
Dim Chicken1 As String = TextBoxChicken1.Text
Dim Chicken2 As String = TextBoxChicken2.Text
Dim Chicken3 As String = TextBoxChicken3.Text
Dim eno1 As String = TextBoxEntryNo1.Text
Dim eno2 As String = TextBoxEntryNo2.Text
Dim eno3 As String = TextBoxEntryNo3.Text
Dim weightlb1 As String = ComboBoxWeightlb1.Text
Dim weightlb2 As String = ComboBoxWeightlb2.Text
Dim weightlb3 As String = ComboBoxWeightlb3.Text
Dim weightoz1 As String = ComboBoxWeightOz1.Text
Dim weightoz2 As String = ComboBoxWeightOz2.Text
Dim weightoz3 As String = ComboBoxWeightOz3.Text
If verif() AndAlso da.InsertRooster(fname, lname, nume, ename) AndAlso da.insertbreedenolboz1(Chicken1, eno1, weightlb1, weightoz1) AndAlso da.insertbreedenolboz1(Chicken2, eno2, weightlb2, weightoz2) AndAlso da.insertbreedenolboz1(Chicken3, eno3, weightlb3, weightoz3) Then
MsgBox("success")
Else
MsgBox("error")
End If
End Sub
Function verif() As Boolean
If TextBoxfname.Text.Trim = "" OrElse TextBoxlname.Text.Trim = "" OrElse TextBoxEntryname.Text.Trim = "" Then
Return False
Else
Return True
End If
End Function
Public Class DataAccess
Private conString As String = "Your connection string"
Public Function insertbreedenolboz1(ByVal breed1 As String, ByVal eno1 As String, ByVal weightlb1 As String, ByVal weightoz1 As String) As Boolean
Using cn As New MySqlConnection(conString)
Using Command As New MySqlCommand("INSERT INTO `rooster` (`entry_no`,`chicken`,`lb`,`oz`,`financer_F_id`) VALUES (@eno,@ckn,@lb,@oz)", cn)
Command.Parameters.Add("@ckn", MySqlDbType.String).Value = breed1
Command.Parameters.Add("@eno", MySqlDbType.String).Value = eno1
Command.Parameters.Add("@lb", MySqlDbType.String).Value = weightlb1
Command.Parameters.Add("@oz", MySqlDbType.String).Value = weightoz1
cn.Open()
If Command.ExecuteNonQuery() = 1 Then
Return True
Else
Return False
End If
End Using
End Using
End Function
Public Function InsertRooster(ByVal fname As String, ByVal lname As String, ByVal nume As String, ByVal ename As String) As Boolean
Using cn As New MySqlConnection(conString)
Using command As New MySqlCommand("Insert into `derbabe`.`financer`( fname, lname,entry_name,num_entries) values (@fn,@ln,@ename,@nume);", cn)
command.Parameters.Add("@fn", MySqlDbType.VarChar).Value = fname
command.Parameters.Add("@ln", MySqlDbType.VarChar).Value = lname
command.Parameters.Add("@ename", MySqlDbType.VarChar).Value = ename
command.Parameters.Add("@nume", MySqlDbType.String).Value = nume
cn.Open()
If command.ExecuteNonQuery() = 1 Then
Return True
Else
Return False
End If
End Using
End Using
End Function
Public Function inserteno1(ByVal eno1 As String) As Boolean
Using cn As New MySqlConnection(conString)
Using Command As New MySqlCommand("INSERT INTO `rooster` (`entry_no`) VALUES (@eno)", cn)
Command.Parameters.Add("@eno", MySqlDbType.String).Value = eno1
cn.Open()
If Command.ExecuteNonQuery() = 1 Then
Return True
Else
Return False
End If
End Using
End Using
End Function
End Class