2013-11-16 2 views
0

Я пытаюсь сделать простую регистрацию & системы активации с помощью моего сервера MySQL и vb.net, и я использую код ниже:Хоста й не могут подключиться к этому серверу MySQL

Imports MySql.Data.MySqlClient 

Public Class ActivateMe 
Dim MysqlConn As MySqlConnection 
Dim myAdapter As New MySqlDataAdapter 
Dim myData As MySqlDataReader 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    MysqlConn = New MySqlConnection() 
    Try 
     MysqlConn.Open() 
     Dim checkUsername As String = "SELECT COUNT(*) FROM users WHERE [email protected] and [email protected]" 
     Dim insertData As String = "INSERT INTO users(hasVerif) VALUES(@p3)" 

     Using MysqlConn = New MySqlConnection(mysqlconntxt4reg) 
      Using myCommand = New MySqlCommand(checkUsername, MysqlConn) 
       MysqlConn.Open() 
       myCommand.Parameters.AddWithValue("@p1", TextBox1.Text) 
       myCommand.Parameters.AddWithValue("@p2", currentRegUser) 
       Dim result = myCommand.ExecuteScalar() 
       If result IsNot Nothing AndAlso Convert.ToInt32(result) > 0 Then 
        Using myCommand2 = New MySqlCommand(insertData, MysqlConn) 
         myCommand.Parameters.AddWithValue("@p3", 1) 
         myCommand2.ExecuteNonQuery() 
         MsgBox("Successfully Activated! You May Now Login!", MsgBoxStyle.Information, "Success") 
         Me.Close() 
        End Using 
       Else 
        MsgBox("Invalid Activation Code", MsgBoxStyle.Critical, "Error") 
       End If 
      End Using 
     End Using 
     MysqlConn.Close() 
    Catch myerror As MySqlException 
     MessageBox.Show("Cannot connect to database: " & vbNewLine & vbNewLine & myerror.Message) 
    Finally 
     MysqlConn.Dispose() 
    End Try 

End Sub 
End Class 

Программа высылает код активации на электронный адрес успешно и загружает код активации в базу данных для проверки, но когда я в форме активации и введите код, он говорит:

Host (my pc name) is not allowed to connect to this mysql server 

В различных формах, сервер принимает соединение и позволяет получить доступ к d atabase, поэтому я не понимаю, почему здесь было бы иначе ... Прошу прислать мне помощь! Thanks rodit

+0

Очевидно, что ошибка не имеет Ide цвета, как это делает выше ... –

+0

В других формах, есть ли у вас то же самое) заявление (New MySqlConnection? –

+0

Дубликат [Host 'xxx.xx.xxx.xxx' не разрешен для подключения к этому серверу MySQL] (http://stackoverflow.com/questions/1559955/host-xxx-xx-xxx-xxx-is-not -allowed к подключению к этому-MySQL-сервер). – CodeCaster

ответ

0

Я не очень хорошо знаком с MySQL под .NET, но я считаю, что вы здесь немного странно. Сначала вы открываете соединение без строки соединения (я предполагаю, что использует параметры по умолчанию)

MysqlConn = New MySqlConnection() 
Try 
    MysqlConn.Open() 

а затем открыть другое соединение, используя явную строку

Using MysqlConn = New MySqlConnection(mysqlconntxt4reg) 
    Using myCommand = New MySqlCommand(checkUsername, MysqlConn) 
     MysqlConn.Open() 

Обратите внимание, что это та же переменная MysqlConn (с различными объекты).

Таким образом, вы можете поймать MySqlException из любого из них. Вы можете использовать это исключение, чтобы выяснить, какой из открытых вызовов действительно вызвал исключение (я предполагаю, что это первый).

Возможно, вы также должны очистить код и оставить только один открытый вызов.

Андрей

+0

Спасибо! Это исправило мою проблему! –

+0

Просто любопытно, сделал ли первый открытый бросок исключение? Также, пожалуйста, отметьте ответ как принятый, если он вам помог. –

+0

Жаль, что это было сейчас, и я не помню ... –

Смежные вопросы