2016-01-16 1 views
0

Я пишу программу, которая просит пользователя ввести свое имя пользователя и пароль в мою базу данных на localhost, которая использует phpmyadmin. Я пробовал следовать этому руководству о том, как это сделать: https://www.youtube.com/watch?v=jZsTLlFoNuo и я могу подключиться к базе данных просто отлично, я думаю, что моя проблема - это мой оператор SQL. Вот мой код формы:Как сохранить пользовательский ввод имени пользователя и пароля в phpmyadmin в VB?

Imports MySql.Data.MySqlClient 


Public Class frmSignup 
Dim ServerString As String = "Server=localhost;User Id=;Password=;Database=AccountInfo" 
Dim SQLConnection As MySqlConnection = New MySqlConnection 

Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    SQLConnection.ConnectionString = ServerString 

    Try 
     If SQLConnection.State = ConnectionState.Closed Then 
      SQLConnection.Open() 
      MsgBox("Successfully connected to DB") 

     Else 
      SQLConnection.Close() 
      MsgBox("Failed to connect to DB") 
     End If 
    Catch ex As Exception 
     MsgBox(ex.ToString) 

    End Try 
End Sub 

Public Sub SaveAccountInformation(ByRef SQLStatement As String) 
    Dim cmd As MySqlCommand = New MySqlCommand 

    With cmd 
     .CommandText = SQLStatement 
     .CommandType = CommandType.Text 
     .Connection = SQLConnection 
     .ExecuteNonQuery() 
    End With 
    SQLConnection.Close() 
    MsgBox("Successfully Registered Account!") 
    SQLConnection.Dispose() 
End Sub 

Private Sub btnSignup_Click(sender As Object, e As EventArgs) Handles btnSignup.Click 
    If txtPasswd.Text = txtPasswd2.Text Then 
     MessageBox.Show("Passwords Match!") 
        Dim SQLStatement1 As String = "INSERT INTO `accountinfodb` (`Usernames`, `Passwords`) VALUES ('', '')" 


    Else 
     MessageBox.Show("Passwords Do Not Match!") 
     txtPasswd.Text = Focus() 
     txtPasswd.Clear() 
     txtPasswd2.Text = Focus() 
     txtPasswd2.Clear() 

    End If 
End Sub 
End Class 

Моя база данных называется «Account Information» с моим столом под названием «Счета», который является, где я хотел бы сохранить свое имя пользователя и пароль.

Итак, мой общий вопрос: как мне хранить информацию (имя пользователя & пароль) в phpmyadmin? Я пробовал искать Google, но безуспешно я нашел что-нибудь. Если бы кто-нибудь мог мне помочь, это было бы здорово, спасибо!

EDIT 1

Так что теперь у меня есть ошибка в моем SQL синтаксисе, так что я около 99% уверен, что это мой SQL заявления в своем коде, что является неправильным при хранении имени пользователя и пароля.

 Dim SQLStatement1 As String = "INSERT INTO accountinfo(accountinfodb) (`Usernames`, `Passwords`) VALUES ('" & txtPasswd.Text & txtUsername.Text & "')" 

дает мне ошибку:

An unhandled exception of type 'MySql.Data.MySqlClient.MySqlException' occurred in MySql.Data.dll

Additional information: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' Usernames , Passwords) VALUES ('123123')' at line 1

Когда я типа 123 для пользователя и 123 для ввода пароля.

+1

Dont хранить пароли в виде текста. Хеши их. Я не уверен, что это имеет какое-либо отношение к phpadmin, поскольку кажется, что вы просто пытаетесь сохранить их в базе данных MySql. В противном случае должно появиться сообщение об ошибке. Это не похоже, что вы когда-либо называли 'SaveAccountInformation', и вам не нужно открывать глобальное соединение все время. – Plutonix

+0

@Plutonix. Я собирался хранить их как соленый хеш MD5, я просто хочу сохранить имя пользователя и пароль в свою БД, чтобы сделать что это действительно работает. Я использую phpmyadmin в качестве своего графического интерфейса для моей базы данных MySQL, возможно, я неправильно настроил базу данных? Моя настройка базы данных можно увидеть здесь: http://imgur.com/4bowwG6 Когда я запускаю свою программу, я ввожу имя пользователя и пароль, затем перехожу к phpmyadmin, но не вижу, что я где-то ввел, Я думаю, что может быть что-то не так с моим SQL-заявлением? – Jcrow

+0

MD5 является субоптимальным, поскольку использование SHA или PBKDF2 столь же прост в использовании. См. [Является ли безопасным для меня хранить имена пользователей и пароли в базе данных?] (Http://stackoverflow.com/q/31146658/1070452) – Plutonix

ответ

0
Dim SQLStatement1 As String = "INSERT INTO accountinfo(accountinfodb) (Passwords,Usernames) VALUES ('" & txtPasswd.Text "', '" & txtUsername.Text & "')" 

Но если вы хотите больше безопасности (SQL Injection атаки)

Dim ServerString As String = "Server=localhost;User Id=;Password=;Database=AccountInfo" 
    Dim query As String = "INSERT INTO accountinfo(accountinfodb) (Passwords,Usernames) VALUES (@txtPasswd, @txtUsername)" 
    cmd = New MySqlCommand(query, ServerString) 
    cmd.CommandType = CommandType.Text 
    cmd.Parameters.Add("@txtPasswd", SqlDbType.VarChar, 255).Value = txtPasswd.Text 
    cmd.Parameters.Add("@txtUsername", SqlDbType.VarChar, 255).Value = xtUsername.Text 
    cmd.ExecuteNonQuery()