[英]how can i add a DateTimePicker and ComboBoxes to mysql database then displaying it to DataGridView
形式
Sub ViewRecords()
Try
read("SELECT * FROM reservation", DataGridView1)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub add_Click(sender As Object, e As EventArgs) Handles add.Click
Try
ComboTIME = (hr.SelectedItem.ToString + ":" + min.SelectedItem.ToString + " " + fr.SelectedItem.ToString)
write("INSERT INTO reservation (ReservationCode, UserId, RestaurantName, RestaurantLocation, Time, Date, ReservationStatus, Remarks) VALUES ('" & code.Text & "','" & userid.Text & "','" & restoname.Text & "', '" & restolocation.Text & "', '" & datepicker.Value & "', '" & ComboTIME & "', '" & ans & "', '" & remarks.Text & "')")
code.Clear()
userid.Clear()
restoname.Clear()
restolocation.Clear()
datepicker.ResetText()
hr.ResetText()
min.ResetText()
fr.ResetText()
y.ResetText()
n.ResetText()
remarks.Clear()
ViewRecords()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
模块连接
Public Sub read(ByVal sql As String, ByVal DTG As Object)
Try
dt = New DataTable
con.Open()
With cmd
.Connection = con
.CommandText = sql
End With
da.SelectCommand = cmd
da.Fill(dt)
DTG.DataSource = dt
Catch ex As Exception
MessageBox.Show(ex.Message & ex.Source, "Load Data Failed")
con.Close()
End Try
con.Close()
da.Dispose()
End Sub
Public Sub write(ByVal sql As String)
Try
con.Open()
With cmd
.Connection = con
.CommandText = sql
result = cmd.ExecuteNonQuery
If result = 0 Then
MessageBox.Show("FAILED.")
Else
MessageBox.Show("SUCCESS.")
End If
End With
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
con.Close()
End Sub
我的程序中唯一的问题是,当我单击按钮时,我绑定并声明为 ComboTIME 的日期时间选择器和组合框不会记录在数据库和 datagridview 中,我与数据库的连接很好,文本框是可存储和可显示的在数据库和datagridview中,有人可以帮我解决这个问题吗?
始终提供可访问性修饰符以使您的代码更清晰易读。 当您开始在多种环境中使用多种语言时,可能很难记住默认的可访问性在 vb.net 中。
将数据访问代码与用户界面代码分开。 例如,您将 DataGridView 传递给您的模块代码。 假设老板说他真的想要一个 web 应用程序。 现在,您不仅需要修复用户界面代码,还需要修改模块。 将它们分开只需要更改 UI 代码。 我的DataAccess
class 保持不变。
Using...End Using
块确保即使出现错误,您的数据库对象也已关闭和处置。
Parameters
有助于防止 sql 注入。 用户可以在文本框中输入任何内容,包括“Delete * From reservation” Parameters
只提供值而不是可执行代码,因此它们不会损坏数据库。 我不得不猜测SqlDbType
因此,您需要检查数据库的正确类型。
用户界面代码...
Private Sub ViewRecords()
Dim dt As DataTable = Nothing
Try
dt = DataAccess.GetReservationData
Catch ex As Exception
MsgBox($"Failed to fill grid {ex.Message}")
Return
End Try
DataGridView1.DataSource = dt
End Sub
Private ans As String = ""
Private Sub InsertReservation()
Dim code As Integer
If Not Integer.TryParse(code.Text, code) Then
MessageBox.Show("Code needs to be a number.")
Return
End If
Dim userID As Integer
If Not Integer.TryParse(userid.Text, userID) Then
MessageBox.Show("User ID needs to be a number.")
Return
End If
Try
DataAccess.InsertReservation(code, userID, restoname.Text, restolocation.Text, ComboTIME.Text, datepicker.Value, ans, remarks.Text)
Catch ex As Exception
MessageBox.Show($"Insert Failed {ex.Message}")
Return
End Try
MessageBox.Show("Reservation inserted successfully.")
End Sub
数据库代码...
Public Class DataAccess
Private Shared ConStr As String = "Your connection string"
Public Shared Function GetReservationData() As DataTable
Dim dt As New DataTable
Using con As New MySqlConnection(ConStr),
cmd As New MySqlCommand("SELECT * FROM reservation", con)
con.Open()
Using reader = cmd.ExecuteReader
dt.Load(reader)
End Using
End Using
Return dt
End Function
Public Shared Sub InsertReservation(ReservationCode As Integer, UserID As Integer, RestaurantName As String, Location As String, Time As String, ResDate As Date, Status As String, Remarks As String)
Using con As New MySqlConnection(ConStr),
cmd As New MySqlCommand("INSERT INTO reservation (ReservationCode, UserId, RestaurantName, RestaurantLocation, Time, Date, ReservationStatus, Remarks) VALUES (@ResurvationCode, @UserID, @RestaurantName, @Location, @Time, @Date, @Status, @Remarks)", con)
With cmd.Parameters
.Add("@ReservationCode", MySqlDbType.Int32).Value = ReservationCode
.Add("@UserID", MySqlDbType.Int32).Value = UserID
.Add("@RestaurantName", MySqlDbType.VarChar).Value = RestaurantName
.Add("@Location", MySqlDbType.VarChar).Value = Location
.Add("@Time", MySqlDbType.VarChar).Value = Time
.Add("@Date", MySqlDbType.DateTime).Value = ResDate
.Add("@Status", MySqlDbType.VarChar).Value = Status
.Add("@Remarks", MySqlDbType.VarChar).Value = Remarks
End With
End Using
End Sub
End Class
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.