Error connecting to SQL with VB - mysql

So i tried to connect my sql database to my vb project but it gives me this error:
Error Connecting to Database : Authentication to host "for user" using
method 'mysql_native_password' failed with message : Acces denied for
user "#'N56VB' (using password : NO)
N56VB is my pc
UPDATE the error wich I get now is : A first chance exception of type
'System.ArgumentException' occurred in System.Data.dll
Additional information: Keyword not supported.
If there is a handler for this exception, the program may be safely
continued
I dont know what to do anymore it will be a stupid I guess ,be easy on me i'm a noob :(
I hope someone knows the problem
Imports MySql.Data.MySqlClient
Imports System.Data.Sql
Imports System
Imports System.Data
Public Class NieuweItems
Public dbconn As New MySqlConnection("Data Source=localhost;user id=root;password=;database=gip;")
Dim conn As New MySqlConnection
Private Sub btn_return_Click(sender As Object, e As EventArgs) Handles btn_return.Click
Me.Close()
SalesApplication.Show()
End Sub
Private Sub btn_inlezen_Click(sender As Object, e As EventArgs) Handles btn_inlezen.Click
Dim sqlCommand As New MySqlCommand
Dim SQLConnection As MySqlConnection = New MySqlConnection
Dim strStockSQL As String
SQLConnection.ConnectionString = "Data Source= localhost ;user id = root'#'localhost; password = ;database=gip;table=stock;"
Try
conn.Open()
strStockSQL = "INSERT INTO Barcode " & txtBarcode.Text & "INSERT INTO Naam_Product" & txtNaam.Text & "INSERT INTO Verkoopprijs" & txtVP.Text
sqlCommand.ExecuteNonQuery()
SQLConnection.Close()
conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error Connecting to Database: " & myerror.Message)
Finally
conn.Close()
End Try
End Sub
End Class

I presume that the error is occurring inside the "btn_inlezen_Click" event handler? I think what's happening is that you're declaring a new empty MySqlConnection, opening the connection inside your Try block and only then are you setting the ConnectionString. Because MySqlConnection was declared with no parameters it might be trying to use N56VB as the user account and this doesn't have any permissions on your MySQL db.
So set your connection string before opening the connection.

Related

MySql - An unhandled exception of type 'System.InvalidOperationException' occurred in System.Data.dll

I am using MYSQL database for that...I get this following Error...Please anyone can help me?
Imports System.Data
Imports MySql.Data Imports MySql.Data.MySqlClient
Public Class formLogin
Dim connStr As String = "server=localhost;user=root;database=ssknet;port=3306;password=;"
Dim connection As New MySqlConnection(connStr)
Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
connection.Open()
Dim cmd As New MySqlCommand("SELECT * FROM user WHERE username=#username and password=#password", connection)
cmd.Parameters.Add("#username", MySqlDbType.VarChar).Value = txtUsername.Text
cmd.Parameters.Add("#password", MySqlDbType.VarChar).Value = txtPassword.Text
Dim adapter As New MySqlDataAdapter
Dim table As New DataTable
adapter.Fill(table)
If table.Rows.Count <= 0 Then
MessageBox.Show("Invalid Username or Password")
Else
MessageBox.Show("Login Success!")
End If
'cmd.ExecuteNonQuery()
connection.Close()
End Sub
End Class
I want to access database right now. Quick frnds
You are missing a critical step. You are not assigning any command to your adapter. It doesn't know how to query anything without a command
Dim adapter As New MySqlDataAdapter(cmd)
Next, according to the MySql Reserved KeyWords, user and password are reserved and to use them in a query as field names you should put backticks (ALT+096) around them. So the query should be written as
Dim cmd As New MySqlCommand("SELECT * FROM `user`
WHERE username=#username
AND `password`=#password", connection)
A part from this your code is good enough albeit there are a couple of thing to consider.
First, connection object should not be kept as global objects. This leads to many problems with the resources kept on the server and with closing/opening the connection when there is an error. Just create and discard the connection inside a using statement
Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
Using connection = New MySqlConnection(connStr)
connection.Open()
.... all of your code except the close connection
End Using ' this close the connection also in case of exceptions
Second, you don't need an SqlDataAdapter and a datatable if you just want to check if the user/password exists
Dim reader = cmd.ExecuteReader()
if reader.HasRows then
MessageBox.Show("Login Success!")
Else
MessageBox.Show("Invalid Username or Password")
End If
Third, it is a great security risk to keep password in plain text inside your database and then using queries to retrieve it. You should use Salt and Hashing methods to store and retrieve password

Connection to MySQL issue

I would like to make a connection between my program in VB.NET and my sql database. The code is like this:
Public Function connecter()
Dim Connexion As String = "Server=197.28.178.33;Database=test;Uid=userid;Pwd=xxxxxxxxxpassxxxx;"
Dim conn As MySqlConnection = New MySqlConnection
conn.ConnectionString = Connexion
conn.Open()
Return conn
End Function
Private Sub form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim lecteur As MySqlDataReader
Dim Requete As String
connecter.Close()
connecter()
Requete = "select * from article"
Dim Commande As New MySqlCommand(Requete, connecter)
lecteur = Commande.ExecuteReader
Do While lecteur.Read
ComboBox1.Items.Add(lecteur.GetString("description"))
Loop
connecter.Close()
End Sub
but this error appears:
An unhandled exception of type 'MySql.Data.MySqlClient.MySqlException'
occurred in MySql.Data.dll
Additional information: Unable to connect to any of the specified
MySQL hosts.
what is the cause of this error?
I don't understand what is the problem and how I can verify if I communicate with the server? and How I'm sure that the server is running

VB 'System.InvalidOperationException' occurred in MySql.Data.dll

I am trying to insert data into a table in MySql. Here is the code that I have.
Private Sub Submit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Submit.Click
Mysqlconn = New MySqlConnection()
Mysqlconn.ConnectionString = "server=localhost;userid=root;password=test;database=YHI"
Try
Mysqlconn.Open()
COMMAND = New MySqlCommand("INSERT INTO Main(Character,Import_Date) VALUES(#character, #import_date)")
COMMAND.Parameters.AddWithValue("#character", Character)
COMMAND.Parameters.AddWithValue("#import_date", ImportDate)
COMMAND.ExecuteNonQuery()
MessageBox.Show("Ore counts for " & Character.Text & " imported successfully")
Catch myerror As MySqlException
MessageBox.Show(myerror.Message)
Finally
Mysqlconn.Dispose()
End Try
Here is the error message I receive:
An unhandled exception of type 'System.InvalidOperationException' occurred in MySql.Data.dll
Additional information: Connection must be valid and open.
I'm new to programming in VB, so any help would be greatly appreciated.
You're not connecting your Mysqlconn to your COMMAND (at least I don't think so - can't see where you declare COMMAND).
There are a few ways to achieve this, but the simplest with your existing code would be just to set it as follows:
Mysqlconn.Open()
COMMAND = New MySqlCommand("INSERT INTO Main(Character,Import_Date) VALUES(#character, #import_date)")
COMMAND.Connection = Mysqlconn
COMMAND.Parameters.AddWithValue("#character", Character)
You are missing the connection.
COMMAND.Connection = MySqlconn

InvalidArgument=Value of '11209485' is not valid for 'index'. Parameter name: index error when running SQL query in VB.NET

I keep getting this error "Failure to communicate InvalidArgument=Value of '11209485' is not valid for 'index'. Parameter name: index" when I'm trying to retrieve card numbers from a database and put them in a combo box so that the user can pick their card number in VB.NET 2012. The 11209485 is the first card number in the database, so I assume the connection is fine, but I don't understand this error at all.
I'd be grateful for any help on the matter. Thanks!
Imports MySql.Data
Imports MySql.Data.MySqlClient
Public Class Form1
Dim dbCon As MySqlConnection
Dim strQuery As String = ""
Dim SQLcmd As MySqlCommand
Dim DataReader As MySqlDataReader
' load application Form
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
'Prepare connection and query
Try
dbCon = New MySqlConnection("Server=localhost;Database=***;Uid=***;Pwd=***")
strQuery = "SELECT CardNumber " &
"FROM Account"
SQLcmd = New MySqlCommand(strQuery, dbCon)
'Open the connection
dbCon.Open()
' create database reader to read information from database
DataReader = SQLcmd.ExecuteReader
' fill ComboBox with account numbers
While DataReader.Read
cboAccountNumbers = cboAccountNumbers.Items(DataReader("CardNumber"))
End While
'Close the connection
DataReader.Close()
dbCon.Close()
Catch ex As Exception
MsgBox("Failure to communicate" & vbCrLf & vbCrLf & ex.Message)
End Try
End Sub
End Class
The error is in this line:
cboAccountNumbers = cboAccountNumbers.Items(DataReader("CardNumber"))
You are attempting to read the 11209485th item in the combo box and there aren't that many items. Try this instead:
cboAccountNumbers.Items.Add(DataReader("CardNumber"))

Host x is not allowed to connect to this mysql server

I am trying to make a simple registration & activation system using my mysql server and vb.net and I am using the code below:
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 verif=#p1 and username=#p2"
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
The program sends the activation code to the email successfully and uploads the activation code to the database for checking but when I am on the activation form and enter the code, it says:
Host (my pc name) is not allowed to connect to this mysql server
In the different forms, the server accepts the connection and allows access to the database so I don't see why it would be different here...
Please send me help!
Thanks
rodit
I'm not very familiar with MySQL under .NET but I believe you do something a bit odd here. First you open a connection without a connection string (I assume that uses default parameters)
MysqlConn = New MySqlConnection()
Try
MysqlConn.Open()
and then you open another connection using an explicit string
Using MysqlConn = New MySqlConnection(mysqlconntxt4reg)
Using myCommand = New MySqlCommand(checkUsername, MysqlConn)
MysqlConn.Open()
Notice it's the same MysqlConn variable (with different objects).
So the MySqlException you're catching could be coming from any one of them. You can use that exception to find out which of the open calls actually triggered the exception (I assume it's first one).
You should probably also cleanup code and keep only one open call.
Andrei