Количество столбцов не соответствует количеству значений в строке 1 - PullRequest
0 голосов
/ 14 июня 2019

У меня проблема с моим кодом, я уже пытался поместить указанную таблицу для каждого столбца, в какой части моего кода была проблема?

clientid = clientid.Substring(0, 3)
rnd = random.Next(100, 999)

clientid = clientid & "-" & Format(Now, "MMdd") & "-" & rnd
query = "SELECT COUNT(*) FROM tbl_clients WHERE clients_Record_Num ='" & clientid & "'"
sqlcmd = New MySqlCommand(query, conn)
chkclientid = sqlcmd.ExecuteScalar()

While chkclientid > 0
    clientid = clientid.Substring(0, 3)
    rnd = random.Next(100, 999)

    clientid = clientid & "-" & Format(Now, "MMdd") & "-" & rnd
    query = "SELECT COUNT(*) FROM tbl_clients WHERE clients_record_num ='" & clientid & "'"
    sqlcmd = New MySqlCommand(query, conn)
    chkclientid = sqlcmd.ExecuteScalar()
End While

query = "Insert into tbl_clients(clients_record_num,clients_client_id,clients_name,clients_contact_number,clients_address,clients_industry,clients_status,clients_delegate,clients_notes) values ('" & clientid.Substring(0, 3) &_ "-" & dttime & "-" & rnd &_ "','" & clientid & _
        "', '" & txtClientName.Text & "','" & txtClientContactNum.Text & "','" & txtClientAddress.Text & _
        "','" & cmbIndustry.Text & "', '" & cmbStatus.Text & "', '" & cmbDelegate.Text & "','" & txtNotes.Text & "','0')"
sqlCommand.Connection = conn
sqlCommand.CommandText = query
sqlCommand.ExecuteNonQuery()

1 Ответ

0 голосов
/ 14 июня 2019

Как прокомментировал @jmcilhinney, измените запрос вставки, чтобы использовать параметры, так как это будет легче читать и обеспечить, чтобы количество значений соответствовало количеству столбцов.

Вот некоторый код шаблона, который вы можете расширить:

Dim InsertCmdText As String =
    "Insert into tbl_clients(clients_record_num,clients_client_id,clients_name,clients_contact_number,clients_address,clients_industry,clients_status,clients_delegate,clients_notes) " &
    "values (@clients_record_num,@clients_client_id,@clients_name,@clients_contact_number,@clients_address,@clients_industry,@clients_status,@clients_delegate,@clients_notes)"
Dim SqlConnectionString As String = "Your Connection Info"
Using cmd As New SqlCommand(InsertCmdText, New SqlConnection(SqlConnectionString))
    Try
        cmd.Parameters.AddWithValue("@clients_record_num", "Value Needed")
        cmd.Parameters.AddWithValue("@clients_client_id", "Value Needed")
        cmd.Parameters.AddWithValue("@clients_name", "Value Needed")
        'repeat above for all params

        cmd.Connection.Open()
        cmd.ExecuteNonQuery()
    Catch ex As Exception
        'Handle your exception
    Finally
        cmd.Connection.Close()
    End Try
End Using

В качестве альтернативы используйте Parameters.Add вместо AddWithValue. Для обсуждения достоинств каждого см. Параметры SqlCommand Add против AddWithValue

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...