none
各位大大你好 請幫我看一下 vb.net 將table插入mysql database哪裡有錯?如何改呢? RRS feed

  • 問題

  • 各位大大你好 請幫我看一下 vb.net  將table插入mysql  database哪裡有錯?如何改呢?謝謝各位大大

    Dim connectionString As String = "Database=vtigercrm;Data Source=*.*.*.*;User Id=****;Password=*****;port=3306;CharSet=utf8" Dim iReturn As Boolean Using SQLConnection As New MySqlConnection(connectionString) SQLConnection.Open() Using sqlCommand As New MySqlCommand() For a As Integer = k To DataGridView1.Rows.Count - 1 With sqlCommand .CommandText = "INSERT INTO vtiger_account ('accountid','account_no','accountname','ownership','siccode','phone','fax') values (@accountid,@account_no,@accountname,@ownership,@siccode,@phone,@fax)" .Connection = SQLConnection .CommandType = CommandType.Text .Parameters.Add("@accountid", MySqlDbType.Int16).Value = DataGridView1.Rows(a).Cells(0).Value.ToString .Parameters.AddWithValue("@account_no", MySqlDbType.VarChar).Value = DataGridView1.Rows(a).Cells(1).Value.ToString .Parameters.AddWithValue("@accountname", MySqlDbType.VarChar).Value = DataGridView1.Rows(a).Cells(2).Value.ToString .Parameters.AddWithValue("@ownership", MySqlDbType.VarChar).Value = DataGridView1.Rows(a).Cells(3).Value.ToString .Parameters.AddWithValue("@siccode", MySqlDbType.VarChar).Value = DataGridView1.Rows(a).Cells(4).Value.ToString .Parameters.AddWithValue("@phone", MySqlDbType.VarChar).Value = DataGridView1.Rows(a).Cells(5).Value.ToString .Parameters.AddWithValue("@fax", MySqlDbType.VarChar).Value = DataGridView1.Rows(a).Cells(6).Value.ToString End With Next Try SQLConnection.Open() sqlCommand.ExecuteNonQuery() iReturn = True Catch ex As MySqlException MsgBox(ex.Message.ToString) iReturn = False Finally SQLConnection.Close() End Try End Using End Using End Sub


    2019年7月2日 上午 02:45

所有回覆

  • 從錯誤訊息來看, 是accountid參數重覆定義, 是否:

    .Parameters.Add("@accountid", MySqlDbType.Int16).Value = DataGridView1.Rows(a).Cells(0).Value.ToString
    應詃寫成:

    .Parameters.AddWithValue("@accountid", MySqlDbType.Int16).Value = DataGridView1.Rows(a).Cells(0).Value.ToString
                           
    .

    2019年7月2日 上午 03:08
  • 親愛的大大感謝你的回覆

    我改成這樣還是出現同樣問題    謝謝

    Dim connectionString As String = "Database=vtigercrm;Data Source=192.168.1.9;User Id=michael;Password=root@1234Ab;port=3306;CharSet=utf8"
            Dim iReturn As Boolean
            Using SQLConnection As New MySqlConnection(connectionString)
                SQLConnection.Open()
                Using sqlCommand As New MySqlCommand()
                    For a As Integer = k To DataGridView1.Rows.Count - 1
                        With sqlCommand
                            .CommandText = "INSERT INTO vtiger_account ('accountid','account_no','accountname','ownership','siccode','phone','fax') values (@accountid,@account_no,@accountname,@ownership,@siccode,@phone,@fax)"
                            .Connection = SQLConnection
                            .CommandType = CommandType.Text
                            .Parameters.AddWithValue("@accountid", MySqlDbType.Int16).Value = DataGridView1.Rows(a).Cells(0).Value.ToString
                            .Parameters.AddWithValue("@account_no", MySqlDbType.VarChar).Value = DataGridView1.Rows(a).Cells(1).Value.ToString
                            .Parameters.AddWithValue("@accountname", MySqlDbType.VarChar).Value = DataGridView1.Rows(a).Cells(2).Value.ToString
                            .Parameters.AddWithValue("@ownership", MySqlDbType.VarChar).Value = DataGridView1.Rows(a).Cells(3).Value.ToString
                            .Parameters.AddWithValue("@siccode", MySqlDbType.VarChar).Value = DataGridView1.Rows(a).Cells(4).Value.ToString
                            .Parameters.AddWithValue("@phone", MySqlDbType.VarChar).Value = DataGridView1.Rows(a).Cells(5).Value.ToString
                            .Parameters.AddWithValue("@fax", MySqlDbType.VarChar).Value = DataGridView1.Rows(a).Cells(6).Value.ToString
                        End With
                                       Next
                    Try
                        SQLConnection.Open()
                        sqlCommand.ExecuteNonQuery()
                        iReturn = True
                    Catch ex As MySqlException
                        MsgBox(ex.Message.ToString)
                        iReturn = False
                    Finally
                        SQLConnection.Close()
                    End Try
                End Using
            End Using
        End Sub

    2019年7月2日 上午 04:12
  • accountid是自動編號欄位嗎?
    2019年7月2日 上午 05:44
  • 親愛的大大:

    在mysql 結構如下

    2019年7月2日 上午 06:51
  • 因為您的程式準備參數在迴圈裏, 所以當迴圈跑第二次時, 參數就重覆定義了, 所以要把建立MySqlCommand和加入參數放到迴圈外(使用Add函式), 但是填參數值放在迴圈裏

    2019年7月2日 上午 07:32
  • 親愛的大大 如果遇到以下這種情況 該如何解呢?

    2019年7月2日 上午 07:42
  • 這應該是您的Table的accountid有外部關聯, 您可以先解除外部關聯看看是否可以新增成功?
    2019年7月2日 上午 10:51