VB. net, MySQL число столбцов не соответствует строке количества значений 1 - PullRequest
0 голосов
/ 01 апреля 2020

я пытаюсь только вставить; имя, фамилия, дата рождения, пол и пароль. однако я читал в другом месте, что причина, по которой это не работает, заключается в том, что используемый им тип хранения - innoDB, и что мне нужно заполнить оставшиеся столбцы в этой таблице, это employee_id, уровень учетной записи и имя пользователя. моя таблица выглядит так:

1 employee_id int (11) AUTO_INCREMENT

2 account_level int (2)

3 имени varchar (20) latin1_swedish_ci

4 фамилия varchar (20) latin1_swedish_ci

5 имя пользователя varchar (20) latin1_swedish_ci

6 пол varchar (20) latin1_swedish_ci

7 date_of_birth дата

1016 * 8 пароль varchar (20) latin1_swedish_ci

Моя цель состоит в том, чтобы каждый новый employee_id увеличивался на 1, account_level был установлен на 1 по умолчанию, а имя пользователя было сделано из фамилии и первой буквы имени и их employee_id

Мой код:

Private Sub save_btn_Click(sender As Object, e As EventArgs) Handles save_btn.Click
    MysqlConn = New MySqlConnection
    MysqlConn.ConnectionString = "Server =localhost; userid = root; password =;Database = furnituredb; pooling=false;"
    Dim reader As MySqlDataReader

    Try
        MysqlConn.Open()
        Dim Query As String
        Query = "insert into furnituredb.employee_profiles (name, surname, username, gender, date_of_birth, password) values ('" & name_txtbox.Text & surname_txtbox.Text & gender_txtbox.Text & dob_txtbox.Text & password_txtbox.Text & "')"
        command = New MySqlCommand(Query, MysqlConn)
        reader = command.ExecuteReader


        MessageBox.Show("Data saved")
        MysqlConn.Close()

    Catch ex As MySqlException
        MessageBox.Show(ex.Message)
    Finally
        MysqlConn.Dispose()
    End Try

End Sub

Я новичок в этом, поэтому, когда вы ответите, пожалуйста, объясните подробно. спасибо!

1 Ответ

1 голос
/ 01 апреля 2020

Вы указали шесть столбцов для вставки в:

"...(name, surname, username, gender, date_of_birth, password)..."

, но вы указали только одно значение:

"...('" & name_txtbox.Text & surname_txtbox.Text & gender_txtbox.Text & dob_txtbox.Text & password_txtbox.Text & "')"

Даже если вы должны были предоставить значения для каждого элемента управления отдельно есть только пять элементов управления, указанных там. Вам нужно предоставить шесть различных значений. Делая это своим хитрым способом, это может выглядеть так:

"...('" & name_txtbox.Text & "', '" & surname_txtbox.Text & "', '" & username_txtbox.Text & "', '" & gender_txtbox.Text & "', '" & dob_txtbox.Text & "', '" & password_txtbox.Text & "')"

или, чуть менее хитроумно:

String.Format("...('{0}', '{1}', '{2}', '{3}', '{4}', '{5}')", name_txtbox.Text, surname_txtbox.Text, username_txtbox.Text, gender_txtbox.Text, dob_txtbox.Text, password_txtbox.Text)

или:

$"...('{name_txtbox.Text}', '{surname_txtbox.Text}', '{username_txtbox.Text}', '{gender_txtbox.Text}', '{dob_txtbox.Text}', '{password_txtbox.Text}')"

Это плохо способ построить SQL код, хотя. Вы должны научиться использовать параметры для вставки значений в код SQL. Есть много, МНОГИЕ места, где вы можете узнать, почему и как, включая здесь .

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