为什么在连接mysql“从字符串到类型'Double'的转换无效”时在Vb.net中出现此错误?

问题描述 投票:0回答:1

我分别尝试了方程式。有效。但是我加入后,却遇到了转换错误。我的目标是将MySql数据获取到vb.net,以便我可以检查一些值并开发项目。我必须在一周内完成项目,但我不知道该如何完成。如果这看起来容易,请原谅我。

Imports MySql.Data.MySqlClient
Public Class Form3
    Dim conn As MySqlConnection
    Dim command As MySqlCommand
    Dim cmd As MySqlCommand
    Dim Da As New MySqlDataAdapter
    Dim ds As New DataSet

    Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        'To check whether the date is same
        TextBox1.Text = System.DateTime.Now.ToString(("MM/dd/yyyy"))

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        conn = New MySqlConnection
        conn.ConnectionString = "server=localhost;user=root;password=1234;database=attendance"
        Dim reader As MySqlDataReader
        Try
            ds.Clear()
            conn.Open()
            'Checking Subject Now
            cmd = New MySqlCommand("select Subject_Name from dateverification", conn)
            Da = New MySqlDataAdapter(cmd)
            Da.Fill(ds, "dateverification")
            TextBox2.Text = ds.Tables(0).Rows(0).Item(0)

            'Checking Todays Date
            cmd = New MySqlCommand("select Today_Date from dateverification", conn)
            Da = New MySqlDataAdapter(cmd)
            Da.Fill(ds, "dateverification")
            Label1.Text = ds.Tables(0).Rows(0).Item(0)

            'Checking Count1
            cmd = New MySqlCommand("select Count1 from dateverification", conn)
            Da = New MySqlDataAdapter(cmd)
            Da.Fill(ds, "dateverification")
            Label2.Text = ds.Tables(0).Rows(0).Item(0)

            'Checking Count2
            cmd = New MySqlCommand("select Count2 from dateverification", conn)
            Da = New MySqlDataAdapter(cmd)
            Da.Fill(ds, "dateverification")
            Label3.Text = ds.Tables(0).Rows(0).Item(0)

            'If the days are Different, Total days will be counted and Date will be updated
            If Label1.Text <> TextBox1.Text Then
                Label1.Text = System.DateTime.Now.ToString(("yyyy-MM-dd"))
                Label2.Text = Label2.Text + 1
                Dim quary1 As String
                quary1 = "UPDATE attendance.dateverification SET Today_Date = '" & Label1.Text & "' , Count1 = '" & Label2.Text & "' WHERE Subject_Name = '" & TextBox3.Text & "'; "
                command = New MySqlCommand(quary1, conn)
                reader = command.ExecuteReader
                MessageBox.Show("Welcome to New Day")

            Else
            'If the date are equal, then the number of counts which register wasopen in same day will be increased
                Label3.Text = Label3.Text + 1
                Dim quary1 As String
                quary1 = "UPDATE attendance.dateverification SET Count2 = '" & Label3.Text & "' WHERE Subject_Name = '" & TextBox3.Text & "'; "
                command = New MySqlCommand(quary1, conn)
                reader = command.ExecuteReader
                MessageBox.Show("You are still on the same day")

            End If

            Dim quary As String
            quary = "UPDATE attendance.dateverification SET Subject_selected = '" & TextBox3.Text & "' WHERE Subject_Name = '" & TextBox3.Text & "'; "
            command = New MySqlCommand(quary, conn)
            reader = command.ExecuteReader
            conn.Close()

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        Finally
            conn.Dispose()

        End Try
vb.net mysql-connector
1个回答
0
投票

不是100%确定在MySql上,但是肯定在Sql Server中,您可以将所有这些作为数据库中的一个连接命令作业来完成。特别注意如何使用参数。使用字符串连接将参数值放入查询中,NEVER可以。即使对于学习或验证概念代码也是如此。

Option Strict On
Option Infer On

Imports MySql.Data.MySqlClient

Public Class Form3

    'Don't try to keep the connection/command objects at the form level!
    'Do keep the connection string here:
    Private ConnectionString As String = "server=localhost;user=root;password=1234;database=attendance"

    Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        TextBox1.Text = DateTime.Today.ToString("MM/dd/yyyy")
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim conn As SqlConnection

        Dim sql As String = 
"UPDATE attendance.dateverification 
    SET  Count1 = CASE WHEN Today_Date <> current_date THEN Count1 + 1 ELSE Count1 END,
        Count2 = CASE WHEN Today_Date = current_date THEN Count2 + 1 ELSE Count2 END,   
        Today_Date = current_date,
        Subject_selected = @subject 
WHERE Subject_Name = @subject;
SELECT Subject_Name, Today_Date, Count1, Count2 
FROM dateverification"

        Try
            conn = New MySqlConnection(ConnectionString)
            Dim cmd As New MySqlCommand(sql, conn)
            'Use actual type and length here
            cmd.Parameters.Add("@subject", MySqlDbType.VarString, 50).Value = TextBox3.Text

            conn.Open()
            Dim rdr As MySqlDataReader = cmd.ExecuteReader()
            rdr.Read()

            TextBox2.Text = rdr("Subject_Name").ToString()
            Label1.Text = rdr("Today_Date").ToString()
            Label2.Text = rdr("Count1").ToString()
            Label3.Text = rdr("Count2").ToString()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        Finally 
            conn.Dispose()
        End Try
    End Sub
End Class
© www.soinside.com 2019 - 2024. All rights reserved.