使用VB.NET将数据插入MySQL表

前端之家收集整理的这篇文章主要介绍了使用VB.NET将数据插入MySQL表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在使用VB.NET应用程序将数据插入MysqL数据库的表时遇到问题.
我有一个简单的表单,当我将一些数据设置到文本框并按下GO按钮时,代码应该执行一个名为InsertCar()的函数,它接受所有这些值并将它们插入到数据库中,然后如果事务是成功完成或否则.我的问题是没有任何东西被插入表中.
  1. Imports MysqL.Data.MysqLClient
  2. Imports System.Data.sql
  3. Imports System
  4. Imports System.Data
  5.  
  6. Public Class Form1
  7.  
  8. Dim connectionString As String = "Server=localhost; User Id=root; Password=123456; Database=uni_park_db"
  9. Dim sqlConnection As MysqLConnection = New MysqLConnection
  10. Dim oDt_sched As New DataTable()
  11.  
  12. //SOME CODE For other buttons//
  13.  
  14.  
  15. //Code for a button where the InsertCar() function is called at the beginning//
  16.  
  17.  
  18. Public Function InsertCar() As Boolean
  19.  
  20. sqlConnection = New MysqLConnection()
  21. sqlConnection.ConnectionString = connectionString
  22. Dim sqlCommand As New MysqLCommand
  23. Dim str_carsql As String
  24.  
  25. Try
  26. str_carsql = "insert into members_car (car_id,member_id,model,color,chassis_id,plate_number,code) values ('" + TextBox20.Text + "','" + TextBox20.Text + "','" + TextBox23.Text + "','" + TextBox24.Text + "','" + TextBox22.Text + "','" + TextBox21.Text + "','" + ComboBox1.SelectedItem + "')"
  27. MsgBox(str_carsql)
  28. sqlCommand.Connection = sqlConnection
  29. sqlCommand.CommandText = str_carsql
  30. sqlCommand.ExecuteNonQuery()
  31.  
  32. Return True
  33.  
  34. Catch ex As Exception
  35. Return False
  36. MsgBox("Error occured: Could not insert record")
  37. End Try
  38.  
  39. End Function
  40.  
  41.  
  42. End Class

我正在使用此MsgBox(str_carsql)来测试sql语句是否正确且是否正确.

任何帮助将不胜感激.

UPDATE

我做了以下,但仍然无法正常工作

  1. Public Function InsertCar() As Boolean
  2.  
  3. sqlConnection = New MysqLConnection()
  4. sqlConnection.ConnectionString = connectionString
  5. sqlConnection.Open()
  6. Dim sqlCommand As New MysqLCommand
  7. Dim str_carsql As String
  8.  
  9. Try
  10.  
  11. str_carsql = "insert into members_car (car_id,code) values (@id,@m_id,@model,@color,@ch_id,@pt_num,@code)"
  12. sqlCommand.Connection = sqlConnection
  13. sqlCommand.CommandText = str_carsql
  14. sqlCommand.Parameters.AddWithValue("@id",TextBox20.Text)
  15. sqlCommand.Parameters.AddWithValue("@m_id",TextBox20.Text)
  16. sqlCommand.Parameters.AddWithValue("@model",TextBox23.Text)
  17. sqlCommand.Parameters.AddWithValue("@color",TextBox24.Text)
  18. sqlCommand.Parameters.AddWithValue("@ch_id",TextBox22.Text)
  19. sqlCommand.Parameters.AddWithValue("@pt_num",TextBox21.Text)
  20. sqlCommand.Parameters.AddWithValue("@code",ComboBox1.SelectedItem)
  21. sqlCommand.ExecuteNonQuery()
  22.  
  23. Return True
  24.  
  25. Catch ex As Exception
  26. Return False
  27. MsgBox("Error occured: Could not insert record")
  28. End Try
  29.  
  30. End Function

UPDATE

插入也不工作,我将发布整个代码可能在其他地方找到问题

导入MysqL.Data.MysqLClient
Imports System.Data.sql
进口系统
导入System.Data

公共类Form1

  1. Dim connectionString As String = "Server=localhost; User Id=root; Password=123456; Database=uni_park_db"
  2. Dim sqlConnection As MysqLConnection = New MysqLConnection
  3. Dim oDt_sched As New DataTable()
  4.  
  5. Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button1.Click
  6.  
  7. Try
  8.  
  9.  
  10. If sqlConnection.State = ConnectionState.Open Then
  11. If TextBox1.Text = "" Then
  12. MsgBox("Please Input a Valid ID")
  13. Else
  14. Dim myAdapter1 As New MysqLDataAdapter("select m.work_date as Work,m.time_in as Start,m.time_out as End from university_members as u inner join members_schedule as m on u.members_schedule_id=m.members_schedule_id where member_id = " & TextBox1.Text,sqlConnection)
  15. Dim myAdapter As New MysqLDataAdapter("select member_id,first_name,last_name,type from university_members,members_schedule where(university_members.members_schedule_id = members_schedule.members_schedule_id) AND member_id = " & TextBox1.Text,sqlConnection)
  16. Dim mydatatable As New DataTable()
  17. Dim dataset As New DataSet()
  18. myAdapter.Fill(mydatatable)
  19.  
  20. If (mydatatable.Rows.Count > 0 And myAdapter1.Fill(dataset)) Then
  21. TextBox2.Text = mydatatable.Rows(0).Item("first_name")
  22. TextBox3.Text = mydatatable.Rows(0).Item("last_name")
  23. TextBox4.Text = mydatatable.Rows(0).Item("type")
  24. TextBox20.Text = mydatatable.Rows(0).Item("member_id")
  25. DataGridView1.DataSource = dataset.Tables(0)
  26. oDt_sched = dataset.Tables(0)
  27.  
  28. Else
  29. MsgBox("Check Error: ID Not Found! Enter a Valid ID")
  30. TextBox1.Text = "Example 123456 "
  31. TextBox2.Text = " "
  32. TextBox3.Text = " "
  33. TextBox4.Text = " "
  34. End If
  35. End If
  36. Else
  37. MsgBox("Database Connection Error: Database Connection Not Established. Please Connect First.")
  38. End If
  39.  
  40.  
  41.  
  42. Catch ex As Exception
  43. MsgBox(ex.ToString)
  44.  
  45. End Try
  46.  
  47.  
  48. End Sub
  49.  
  50.  
  51.  
  52. Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
  53. Application.Exit()
  54. End Sub
  55.  
  56.  
  57. Private Sub DatabaseConnectToolStripMenuItem_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles DatabaseConnectToolStripMenuItem.Click
  58.  
  59. sqlConnection = New MysqLConnection()
  60. sqlConnection.ConnectionString = connectionString
  61. Try
  62.  
  63. If sqlConnection.State = ConnectionState.Closed Then
  64. sqlConnection.Open()
  65. MsgBox("Database Connection Sccessfully Established")
  66. Else
  67. sqlConnection.Close()
  68. MsgBox("Database Connection Terminated")
  69.  
  70. End If
  71. Catch ex As Exception
  72. MsgBox(ex.ToString)
  73.  
  74. End Try
  75.  
  76. End Sub
  77.  
  78.  
  79.  
  80. Private Sub Button4_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button4.Click
  81.  
  82. TextBox1.Text = "Example 123456 "
  83. TextBox2.Text = " "
  84. TextBox3.Text = " "
  85. TextBox4.Text = " "
  86. DataGridView1.Columns.Clear()
  87. DataGridView1.DataSource = Nothing
  88.  
  89.  
  90. End Sub
  91.  
  92.  
  93. Private Sub Button2_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button2.Click
  94.  
  95.  
  96. Dim str_sql As String = ""
  97. Dim obj_msadapter As MysqLDataAdapter
  98. Dim i_maxh As Integer
  99. Dim i_beginh As Integer
  100. Dim ods_avail As DataSet = New DataSet()
  101. Dim str_err As String = ""
  102. Dim i_strth As Integer
  103. Dim odt_avail As New DataTable()
  104. Dim odrcol_avail() As DataRow
  105. Dim str_range As String = ""
  106.  
  107. Try
  108.  
  109. 'perform insert car here (boolean to see if the code continues running)
  110.  
  111. ''''''''''''''''''''''''''
  112.  
  113. If InsertCar() Then
  114. For Each odr As DataRow In oDt_sched.Rows
  115. i_maxh = odr(2)
  116. i_beginh = odr(1)
  117. i_strth = odr(1) + 2
  118. str_range = ""
  119.  
  120. str_sql = "select * from parked_cars where pwork_date='" & odr(0).ToString() & "'"
  121.  
  122. ods_avail = New DataSet()
  123. obj_msadapter = New MysqLDataAdapter(str_sql,sqlConnection)
  124. obj_msadapter.Fill(ods_avail)
  125.  
  126. odt_avail = ods_avail.Tables(0)
  127.  
  128. If odt_avail.Rows.Count < 210 Then
  129. While (i_strth <= i_maxh)
  130. odrcol_avail = odt_avail.Select("ptime_in='" + i_beginh.ToString() + "' and ptime_out='" + i_strth.ToString() + "'")
  131.  
  132. If odrcol_avail.Count < 30 Then
  133. str_range += i_beginh.ToString() + ";" + i_strth.ToString()
  134. Else
  135. str_range += "0"
  136. End If
  137.  
  138. i_strth += 2
  139. i_beginh += 2
  140. End While
  141.  
  142. FillSpots(str_range,odr(0).ToString())
  143. Else
  144. str_err += "no place on day: " + odr(0).ToString() + ";"
  145. MsgBox("No place is found on this day")
  146. End If
  147.  
  148. Next
  149. End If
  150. Catch ex As Exception
  151. MsgBox("")
  152.  
  153. End Try
  154. End Sub
  155.  
  156. Public Function FillSpots(ByVal blowf As String,ByVal _day As String) As Boolean
  157.  
  158. Dim str_unit As String
  159. Dim i_count As Integer = 0
  160. Dim str_i_strt As String
  161. Dim str_i_end As String
  162. Dim str_sql As String
  163.  
  164. Try
  165. For Each str_unit In blowf.Split("0")
  166. If str_unit <> "" Then
  167. str_i_strt = str_unit.Split(";")(0)
  168. str_i_end = str_unit.Split(";")(str_unit.Split(";").Length - 1)
  169. str_sql = "insert into parked_cars values ('" + TextBox20.Text + "','" + _day + "','" + str_i_strt + "','" + str_i_end + "')"
  170. End If
  171. Next
  172.  
  173. Return True
  174. Catch ex As Exception
  175. Throw ex
  176. End Try
  177. End Function
  178.  
  179.  
  180. Public Function InsertCar() As Boolean
  181.  
  182. sqlConnection = New MysqLConnection()
  183. sqlConnection.ConnectionString = connectionString
  184. sqlConnection.Open()
  185. Dim sqlCommand As New MysqLCommand
  186. Dim str_carsql As String
  187.  
  188. Try
  189.  
  190. str_carsql = "insert into members_car (car_id,code) values (?id,?m_id,?model,?color,?ch_id,?pt_num,?code)"
  191. sqlCommand.Connection = sqlConnection
  192. sqlCommand.CommandText = str_carsql
  193. sqlCommand.CommandType = CommandType.Text
  194. sqlCommand.Parameters.AddWithValue("?id",TextBox20.Text)
  195. sqlCommand.Parameters.AddWithValue("?m_id",TextBox20.Text)
  196. sqlCommand.Parameters.AddWithValue("?model",TextBox23.Text)
  197. sqlCommand.Parameters.AddWithValue("?color",TextBox24.Text)
  198. sqlCommand.Parameters.AddWithValue("?ch_id",TextBox22.Text)
  199. sqlCommand.Parameters.AddWithValue("?pt_num",TextBox21.Text)
  200. sqlCommand.Parameters.AddWithValue("?code",ComboBox1.SelectedItem)
  201. sqlCommand.ExecuteNonQuery()
  202.  
  203. Return True
  204.  
  205. Catch ex As Exception
  206. Return False
  207. MsgBox("Error occured: Could not insert record")
  208. End Try
  209.  
  210. End Function
  211.  
  212.  
  213.  
  214. Private Sub Button3_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button3.Click
  215.  
  216. ComboBox1.ResetText()
  217. TextBox21.Text = " "
  218. TextBox22.Text = " "
  219. TextBox23.Text = " "
  220. TextBox24.Text = " "
  221. DataGridView2.Columns.Clear()
  222. DataGridView2.DataSource = Nothing
  223.  
  224. End Sub

结束类

谢谢大家的帮助.这是对我有用的解决方

  1. Dim iReturn as boolean
  2. Using sqlConnection As New MysqLConnection(connectionString)
  3. Using sqlCommand As New MysqLCommand()
  4. With sqlCommand
  5. .CommandText = "INSERT INTO members_car (`car_id`,`member_id`,`model`,`color`,`chassis_id`,`plate_number`,`code`) values (@xid,@imodel,@icolor,@icode)"
  6. .Connection = sqlConnection
  7. .CommandType = CommandType.Text // You missed this line
  8. .Parameters.AddWithValue("@xid",TextBox20.Text)
  9. .Parameters.AddWithValue("@m_id",TextBox20.Text)
  10. .Parameters.AddWithValue("@imodel",TextBox23.Text)
  11. .Parameters.AddWithValue("@icolor",TextBox24.Text)
  12. .Parameters.AddWithValue("@ch_id",TextBox22.Text)
  13. .Parameters.AddWithValue("@pt_num",TextBox21.Text)
  14. .Parameters.AddWithValue("@icode",ComboBox1.SelectedItem)
  15.  
  16. End With
  17. Try
  18. sqlConnection.Open()
  19. sqlCommand.ExecuteNonQuery()
  20. iReturn = TRUE
  21. Catch ex As MysqLException
  22. MsgBox ex.Message.ToString
  23. iReturn = False
  24. Finally
  25. sqlConnection.Close()
  26. End Try
  27. End Using
  28. End Using
  29.  
  30. Return iReturn
实例化连接后,打开它.
  1. sqlConnection = New MysqLConnection()
  2. sqlConnection.ConnectionString = connectionString
  3. sqlConnection.Open()

另外,避免仅通过附加字符串来构建sql语句.如果你使用参数更好,这样你就可以获得性能,你的程序不容易受到sql注入攻击,你的程序也更稳定.例如:

  1. str_carsql = "insert into members_car
  2. (car_id,code)
  3. values
  4. (@id,@code)"

然后你这样做:

  1. sqlCommand.Parameters.AddWithValue("@id",TextBox20.Text)
  2. sqlCommand.Parameters.AddWithValue("@m_id",TextBox23.Text)
  3. ' And so on...

然后你打电话:

  1. sqlCommand.ExecuteNonQuery()

猜你在找的VB相关文章