【问题标题】:add record to mysql database in vb.net在 vb.net 中将记录添加到 mysql 数据库
【发布时间】:2015-11-10 12:27:15
【问题描述】:

我正在尝试将输入的输入记录添加到数据表中,但它不起作用。这个我试过了。

vb.net

Imports System.Data
Imports System.Configuration
Imports MySql.Data.MySqlClient

Partial Class index
    Inherits System.Web.UI.Page
    Dim con As New MySqlConnection("Data Source=204.11.58.166;port=3306;Initial Catalog=quistaBooking;User Id=my_username;password=my_password ;")

Protected Sub confirmBook_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles confirmBook.Click

            Dim emailID, contactNo, source, destination, duration, distance, fare, datetime, vehicle As String

            emailID = email.Text
            contactNo = contact.Text
            source = txtSource.Text
            destination = txtDestination.Text
            duration = dvDuration.Text
            distance = dvDistance.Text
            datetime = datetimepicker.Text
            vehicle = selectVehicle.SelectedItem.ToString

        Try
            Dim str1 As String = "INSERT INTO logistics ('email', 'contact', 'source', 'destination', 'duration', 'distance', 'dateTime', 'vehicleType') values ('" + emailID + "', '" + contactNo + "', '" + source + "', '" + destination + "', '" + duration + "', '" + datetime + "', '" + vehicle + "')"
            Dim data As MySqlDataReader
            Dim adapter As New MySqlDataAdapter
            Dim command As New MySqlCommand
            command.CommandText = str1
            command.Connection = con
            adapter.SelectCommand = command
            data = command.ExecuteReader
            con.Close()
        Catch ex As Exception
            Response.Write(ex)
        End Try
    End Sub
End Class

错误

System.InvalidOperationException:连接必须有效且打开。在 MySql.Data.MySqlClient.MySqlConnection.Throw(Exception ex) 在 MySql.Data.MySqlClient.MySqlCommand.CheckState() 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior 行为) 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader () at index.confirmBook_Click(Object sender, EventArgs e) in E:\MY WEB\Quista\Website\index.aspx.vb:line 58

谁能帮我解决我哪里出错了?

更新错误

MySql.Data.MySqlClient.MySqlException (0x80004005):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ''email'、'contact'、'source'、'destination'、'duration'、'distance'、'dateTime''附近使用正确的语法在 MySql.Data.MySqlClient.MySqlStream.ReadPacket() 在 MySql.Data.MySqlClient.NativeDriver.GetResult(Int32&affectedRow, Int64&insertedId) 在 MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32&affectedRows, Int64& insertedId) 在MySql.Data.MySqlClient.MySqlDataReader.NextResult() 的 MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force) 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior 行为) 在 MySql.Data.MySqlClient.MySqlCommand .ExecuteReader() at index.confirmBook_Click(Object sender, EventArgs e) in E:\MY WEB\Quista\Website\index.aspx.vb:line 59

【问题讨论】:

    标签: mysql asp.net vb.net


    【解决方案1】:

    查看 SQL 查询:

    "INSERT INTO logistics 
    ('email', 'contact', 'source', 'destination', 'duration', 'distance', 'dateTime', 'vehicleType')
    values ('" + emailID + "', '" + contactNo + "', '" + source + "', '" + destination + "', '" + duration + "', '" + datetime + "', '" + vehicle + "')"
    

    我已经看到了问题:

    • 您引用了字段名称,这是语法错误。
    • 您没有使用参数化查询,这是一个安全问题,但也可能是语法错误。例如,如果目的地是字符串,则需要引号。这就是您需要使用参数的原因。

    更多内容:

    • 从未打开连接
    • data = command.ExecuteReader 没有意义,因为它是 INSERT 没有什么可读的,你应该使用 command.ExecuteNonQuery()

    我越看你的代码,发现的问题越多,我为你重写了它:

    Try
       con.Open()
       command.Connection = con
    
       command.CommandText = "INSERT INTO logistics (`email`, `contact`, `source`, `destination`, `duration`, `distance`, `dateTime`, `vehicleType`) values  (@emailID, @contactNo, @source, @destination, @duration, @datetime, @vehicle)"
       command.Prepare()
       command.Parameters.AddWithValue("@emailID", emailID)
       command.Parameters.AddWithValue("@contactNo", contactNo)
       command.Parameters.AddWithValue("@source", source)
       command.Parameters.AddWithValue("@destination", destination)
       command.Parameters.AddWithValue("@duration", duration)
       command.Parameters.AddWithValue("@datetime", datetime)
       command.Parameters.AddWithValue("@vehicle", vehicle)
       command.Parameters.AddWithValue("@text", "One")
       command.ExecuteNonQuery()
    Catch ex As MySqlException
        MessageBox.Show("Error " & ex.Number & " has occurred: " & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
    

    【讨论】:

      【解决方案2】:

      连接必须有效且打开

      data = command.ExecuteReader之前添加con.Open()

      您的 SQL 语法有错误

      您有 8 个字段并尝试仅插入 7 个值。缺少值distance

      【讨论】:

      • 我试过了,但现在显示了一些其他错误。请参考上面更新的错误..谢谢
      猜你喜欢
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-26
      相关资源
      最近更新 更多