I have an assignment where I have to develop a Windows application using Visual Basic .NET. From the form that I have designed, it should save all records in a table in a MySQL database. How should I do this? Here's what I've got so far:
Imports System.Data
Imports System.Data.SqlClient
Public Class AddMember
Dim con As New SqlConnection
Dim cmd As New SqlCommand
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
con.ConnectionString = "Data Source=|DataDirectory|\127.0.0.1"
con.Open()
cmd.Connection = con
cmd.CommandText = "INSERT INTO memberdetails (ID, Name, Surname, Age, Gender, Contact, Address) VALUES (#ID, #Name, #Surname, #Age, #Gender, #Contact, #Address)"
cmd.Parameters.AddWithValue("#ID", TextBox1.Text)
cmd.Parameters.AddWithValue("#Name", TextBox2.Text)
cmd.Parameters.AddWithValue("#Surname", TextBox3.Text)
cmd.Parameters.AddWithValue("#Age", TextBox4.Text)
cmd.Parameters.AddWithValue("#Gender", ComboBox1.Text)
cmd.Parameters.AddWithValue("#Contact", TextBox6.Text)
cmd.Parameters.AddWithValue("#Address", TextBox7.Text)
cmd.ExecuteNonQuery()
con.Close()
MsgBox("Added Successfully")
End Sub
End Class
con.Open()-error 26
I think it has to do with your connection string. try this connection string format:
con.ConnectionString = "Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;"
and since your database server is MySQL, you shouldn't use System.Data.SqlClient namespace but instead use MySql.Data.MySqlClient namespace.
Related
I have to display a table in data grid in vb.net(visual studio 2008) using adodb from mysql.
but the following code not working .(No error are shown)
please help
I opted adodb due to error,even after many attempts ,using mysqldataadpter
Imports MySql.Data.MySqlClient
'Imports MySql.Data.Types
'Imports MySql.Data.VisualStudio
'Imports MySql.Data
Imports System.IO
Imports System.Data
Imports CrystalDecisions.CrystalReports.Engine
Public Class Form3
Dim sSQLQry As String
Dim ReturnArray
Dim Conn As New ADODB.Connection
Dim mrs As New ADODB.Recordset
Dim mrs2 As New ADODB.Recordset
Dim DBPath As String, sconnect As String
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
sconnect = "DRIVER={MySQL ODBC 8.0 Unicode Driver};Server=localhost;Database=stockauto;User=root;Password=;"
If Conn.State = 1 Then
Conn.Close()
End If
Conn.Open(sconnect)
sql2 = "SELECT * From STOCK"
mrs.Open(sql2, Conn)
If mrs.State = 1 Then
mrs.Close()
End If
mrs.Open(sql2, Conn)
DataGridView1.DataSource = mrs
DataGridView1.Refresh()
End Sub
First the connection string. See https://www.connectionstrings.com/mysql-connector-net-mysqlconnection/
I used the simplest example. Replace yourUserID and yourPassword with the real values.
Get rid of all the ADODB and ODBC stuff. This code uses ADO.net
Using...End Using blocks ensure that database objects are closed and disposed.
Private MySqlConnStr As String = "Server=localhost;Database=stockauto;Uid=yourUserId;Pwd=yourPassword;"
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim dt = GetStockData()
DataGridView1.DataSource = dt
End Sub
Private Function GetStockData() As DataTable
Dim dt As New DataTable
Using cn As New MySqlConnection(MySqlConnStr),
cmd As New MySqlCommand("SELECT * From STOCK", cn)
cn.Open()
Using reader = cmd.ExecuteReader
dt.Load(reader)
End Using
End Using
Return dt
End Function
ADODB is the old mechanism from pre-.Net VB. It exists only for backwards compatibility with old code and should not be used for new development.
Try this, which uses the updated ADO.Net:
' Don't use the root account to connect to the database!
Private sconnect As String = "DRIVER={MySQL ODBC 8.0 Unicode Driver};Server=localhost;Database=stockauto;User=root;Password=;"
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim data As New DataTable
Using cn As New MySqlConnection(sconnect), _
cmd As New MySqlCommand("SELECT * FROM Stock", cn), _
da As New MySqlDataAdapter(cmd)
da.Fill(data)
End Using
DataGridView1.DataSource = data
DataGridView1.Refresh()
End Sub
Im trying to connect to mySql, but I have problem locating where im doing wrong.
My form contain e a label that is a number thats going to be posted to Score and a textbox where the user typed their name to be posted in Navn.
My code so far is:
Imports System
Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim connect As New SqlConnection("Data Source = mysqlAdress;Network Library= DBMSSOCN;Initial Catalog=**;User ID=**;Password=**;")
Dim query As String = "INSERT INTO 2048 VALUES(#score, #name)"
Dim command As New SqlCommand(query, connect)
command.Parameters.Add("#score", SqlDbType.Int).Value = Label1.Text
command.Parameters.Add("#navn", SqlDbType.VarChar).Value = TextBox1.Text
connect.Open()
connect.Close()
End Sub
Your table name should be enclosed in backticks like this:
Dim query As String = "INSERT INTO `2048` VALUES(#score, #name)"
Also try to avoid table names with such naming conventions ie., only numbers.
Also you are opening and closing the connection simultaneously.
connect.Open()
connect.Close()
Try like this:
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim connectionString As String = "Data Source = mysqlAdress;Network Library= DBMSSOCN;Initial Catalog=**;User ID=**;Password=**;"
Using SQLConnection As New MySqlConnection(connectionString)
Using sqlCommand As New MySqlCommand()
With sqlCommand
.CommandText = "INSERT INTO `2048` VALUES(#score, #name)"
.Connection = SQLConnection
.CommandType = CommandType.Text
.Parameters.AddWithValue("#score", Label1.Text)
.Parameters.AddWithValue("#name", TextBox1.Text)
End With
Try
SQLConnection.Open()
sqlCommand.ExecuteNonQuery()
Catch ex As MySqlException
MsgBox ex.Message.ToString
Finally
SQLConnection.Close()
End Try
End Using
End Using
End Sub
I am currently developing a webpage using ASP.NET with VB as back end. But I am facing a problem. I don't know how to make a database connection to connect with MYSQL WORKBENCH. I just wrote the connection but it just code for SQL server.
This is my sample code for connection but it for sql server. I just want code for mySQL workbench.
Imports System.Data
Imports System.Data.SqlClient
Partial Class Request
Inherits System.Web.UI.Page
Dim con As New SqlConnection
Dim cmd As New SqlCommand
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
txt1.Focus()
txt2.Focus()
txt3.Focus()
txt4.Focus()
txt5.Focus()
txt6.Focus()
txt7.Focus()
ddl1.Focus()
ddl2.Focus()
ddl3.Focus()
ddl4.Focus()
End Sub
Protected Sub btnsubmit_Click(sender As Object, e As EventArgs) Handles btnsubmit.Click
con.ConnectionString = "Server=localhost;Database=test;Uid=root;Pwd=1234;"
con.Open()
cmd.Connection = con
cmd.CommandText = "INSERT INTO cr_record (Emplid, Nama, date, DeptDesc, email, Change, reasonchange,problem,priority,reasondescription,systemrequest) VALUES (#Emplid, #Nama, #date, #DeptDesc, #email, #Change, #reasonchange,#problem,#priority,#reasondescription,#systemrequest)"
cmd.Parameters.AddWithValue("#Emplid", ddl1.Text)
cmd.Parameters.AddWithValue("#Nama", TextBox1.Text)
cmd.Parameters.AddWithValue("#date", txt5.Text)
cmd.Parameters.AddWithValue("#DeptDesc", txt2.Text)
cmd.Parameters.AddWithValue("#email", txt4.Text)
cmd.Parameters.AddWithValue("#Change", ddl2.Text)
cmd.Parameters.AddWithValue("#reasonchange", txt6.Text)
cmd.Parameters.AddWithValue("#problem", ddl3.Text)
cmd.Parameters.AddWithValue("#priority", rbl1.Text)
cmd.Parameters.AddWithValue("#reasondescription", txt7.Text)
cmd.Parameters.AddWithValue("#systemrequest", ddl4.Text)
cmd.ExecuteNonQuery()
con.Close()
MsgBox("Added Successfully")
End Sub
End Class
You will need to download and reference the MySQL .NET Connector http://dev.mysql.com/downloads/connector/net/. You will then use the System.Data.MySqlClient namespace and replace your SqlConnection and SqlCommand with MySqlConnection and MySqlCommand
Im very new to Visual Basic (using visual studio 2010). Im just doing some tests to connect to a mysql database.
I do not know how to call these values once I have made the sql query.
How do I go about this, i.e. to show the values on the labels on a form?
Code:
Imports MySql.Data.MySqlClient
Public Class Form1
Dim ServerString As String = "Server = localhost; User Id = root; database = CALIBRA"
Dim SQLConnection As MySqlConnection = New MySqlConnection
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SQLConnection.ConnectionString = ServerString
Try
If SQLConnection.State = ConnectionState.Closed Then
SQLConnection.Open()
MsgBox("Successfully connected to MySQL database.")
Else
SQLConnection.Close()
MsgBox("Connection is closed.")
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
Public Sub calibra_query(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("Records Successfully Retrieved")
SQLConnection.Dispose()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim SQLStatement As String = "SELECT Auto1, Auto2, TotalWeight FROM txticket WHERE TicketCode = '12210'"
calibra_query(SQLStatement)
Dim Automobile1, Automobile2, TotalWgt As Long
SOMETHING MISSING HERE
SOMETHING MISSING HERE
Label2.Text = Automobile1.ToString()
Label2.Text = Automobile2.ToString()
Label2.Text = TotalWgt.ToString()
End Sub
End Class
What do I put in the "SOMETHING MISSING HERE"? Much appreciation.
You will need a data reader in order to read the content of what is returned from the sql query. Your Sub calibra_query, is executing a nonreader, that isn't going to do what you need. You only want to use executeNonReader for things that you don't need a result from. (Like an Update statement for example)
You want something a bit more like this:
Dim cmd As MySqlCommand = New MySqlCommand
With cmd
.CommandText = SQLStatement
.CommandType = CommandType.Text
.Connection = SQLConnection
End With
Dim myReader as MySqlDataReader = myCommand.ExecuteReader
If myReader.Read Then
TextBox1.Text = myReader.GetString(0)
TextBox2.Text = myReader.Getstring(1)
TextBox3.Text = myReader.GetInt32(2)
End If
myReader.Close()
SQLConnection.Close()
MsgBox("Records Successfully Retrieved")
SQLConnection.Dispose()
I am assuming the types of the 3 fields in your query, and just outputting it to text boxes to give you the idea. That also assumes that you are only going to get one record as a result.
(Edit: to fix formatting)
I've searched around and haven't been able to find anything along the lines of doing this.
You need to install Connector/Net, which will give you a full ADO.Net provider for MySql you can use. Be warned that this is GPL software, meaning if you distribute it as part of a commercial product you must also distribute your source code. It's an open legal question, but last I heard most web sites are okay with this, because you are not distributing your server code. Desktop apps may have an issue, though.
Imports System.Data.SqlClient
Imports MySql.Data.MySqlClient
Public Class LoginForm1
Dim MySQLConnection As MySqlConnection
Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.Close()
End Sub
Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.Close()
End Sub
Private Sub Cancel_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click
End
End Sub
Private Sub OK_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
MySQLConnection = New MySqlConnection
MySQLConnection.ConnectionString = "server=db4free.net;Port=3306; User ID=db4freeusername; password=db4freepassword; database=nameofyourdatabase"
MySQLConnection.Open()
Dim MyAdapter As New MySqlDataAdapter
Dim SqlQuary = "SELECT * From nameofthetable WHERE Username='" & UsernameTextBox.Text & "' AND password = '" & PasswordTextBox.Text & "';"
Dim Command As New MySqlCommand
Command.Connection = MySQLConnection
Command.CommandText = SqlQuary
MyAdapter.SelectCommand = Command
Dim Mydata As MySqlDataReader
Mydata = Command.ExecuteReader
If Mydata.HasRows = 0 Then
MsgBox("Error During Login:Please Enter Valid Data")
Else
Form1.Show()
Me.Hide()
End If
End Sub
End Class
First of all you need to install MySQL connector for .NET.
Imports MySql.Data.MySqlClient
Dim myConnection As MySqlConnection = New MySqlConnection()
Dim myConnectionString As String = "Server=SERVERNAME;Database=DATABASE;Uid=root;Pwd=password;"
myConnection.ConnectionString = myConnectionString
myConnection.Open()
//execute queries, etc
myConnection.Close()
I use C#:
const String ConnectionString = "Driver={MySQL ODBC 5.1 Driver};Server=localhost;Port=3306;Database=test;User=root;Password=;Option=3;";
OdbcConnection conn = new OdbcConnection(ConnectionString);
conn.Open();
OdbcCommand command = new OdbcCommand();
command.CommandType = CommandType.StoredProcedure;
command.Connection = conn;
command.CommandText = "insert into search (tempsearchKey, state, suburb) values ('" + tempsearchKey+"','"+state+"','"+suburb+"')";
command.ExecuteNonQuery();
command.Cancel();
install odbc driver from mysql website
and convert this to VB.NET,
Maybe this link could help:
http://dev.mysql.com/tech-resources/articles/ebonat-load-and-search-mysql-data-using-vbnet-2005.html
Install MySQL connector for .NET, and APACHE, also install XAMPP so you could use phpMyAdmin