vb.net cant connect to mysql - mysql

i tried to create on login system with mysql. but i dont know it doesnt work. It give my try again every time whats the problem?
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
mysqlconn = New MySqlConnection
mysqlconn.ConnectionString = "server=localhost;userid=root;password=;database=tes"
Dim reader As MySqlDataReader
Try
mysqlconn.Open()
Dim query As String = "select * from kullanicilar where 'username=" & TextBox1.Text & "' and 'password=" & TextBox2.Text & "'"
komut = New MySqlCommand(query, mysqlconn)
reader = komut.ExecuteReader
Dim girdimi As Integer = 0
If reader.Read Then
girdimi = girdimi + 1
End If
If girdimi = 1 Then
Form2.Show()
ElseIf girdimi = 0 Then
MessageBox.Show("try again")
End If
mysqlconn.Close()
Catch ex As MySqlException
MessageBox.Show(ex.Message)
Finally
mysqlconn.Dispose()
End Try
End Sub

Try it this way (based on DataReader MSDN article):
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
mysqlconn = New MySqlConnection
mysqlconn.ConnectionString = "server=localhost;userid=root;password=;database=tes"
Dim reader As MySqlDataReader
Try
mysqlconn.Open()
Dim query As String = "select * from kullanicilar where username='" & TextBox1.Text & "' and password='" & TextBox2.Text & "'"
komut = New MySqlCommand(query, mysqlconn)
reader = komut.ExecuteReader()
Dim girdimi As Integer = 0
If reader.HasRows Then
Do While reader.Read()
girdimi = girdimi + 1
If girdimi = 1 Then
Form2.Show()
ElseIf girdimi = 0 Then
MessageBox.Show("try again")
End If
Loop
End If
mysqlconn.Close()
Catch ex As MySqlException
MessageBox.Show(ex.Message)
Finally
mysqlconn.Dispose()
End Try
End Sub

Related

i want to call data from different table

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
con.Open()
cmd.Connection = con
cmd.CommandType = CommandType.Text
cmd.CommandText = "SELECT * FROM guestdatabase "
dr = cmd.ExecuteReader
While (dr.Read())
Dim nems = dr.GetString("Name")
Visitor.Items.Add(nems)
End While
Catch ex As Exception
MessageBox.Show(ex.Message)
con.Close()
End Try
End Sub
Private Sub Fname_TextChanged(sender As Object, e As EventArgs) Handles Fname.TextChanged
Try
con.Close()
con.Open()
cmd.Connection = con
cmd.CommandType = CommandType.Text
cmd.CommandText = "SELECT * FROM residents WHERE FirstName = '" & Fname.Text & "'"
dr = cmd.ExecuteReader
If Not dr Is Nothing Then
dr.Read()
Lname.Text = dr("LastName").ToString
dr.Close()
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
con.Close()
End Try
End Sub
I want to call data from different table at the same time at 1 form but it says "invalid attempt to access a field before calling Read() 1 from combobox and 1 for textbox please help :3 thankyou in advance

MonthCalendar Dates are not changing to Bold

Hi i am having problems highlighting or making my selected date bold. Example when i add event to that date it should be bold so i will know that there are entries inside the date. But It's not working and i dont know what's wrong.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
mydbcon = New MySqlConnection
mydbcon.ConnectionString = "server=localhost;userid=jared;password=jared;database=database"
Dim reader As MySqlDataReader
Try
mydbcon.Open()
Dim Query As String
Query = "Insert into database.calendar (eventname,EventDate,Time,Description) Values ('" & TextBox2.Text & "','" & Form4.MonthCalendar1.SelectionRange.Start & "','" & ComboBox1.SelectedItem & "','" & TextBox1.Text & "')"
COMMAND = New MySqlCommand(Query, mydbcon)
reader = COMMAND.ExecuteReader
MessageBox.Show("Event Succesfully Saved")
mydbcon.Close()
Catch ex As MySqlException
MessageBox.Show(ex.Message)
Finally
mydbcon.Dispose()
Try
mydbcon.Open()
Dim eventdate As String
eventdate = "SELECT * FROM database.calendar Where EventDate = '" & Form4.MonthCalendar1.SelectionRange.Start & "'"
reader = COMMAND.ExecuteReader
If reader.HasRows = True Then
While reader.Read
eventdate = reader.GetValue(reader.GetOrdinal("EventDate")).ToShortDateString
Form4.MonthCalendar1.AddBoldedDate(CDate(eventdate))
End While
reader.Close()
Form4.MonthCalendar1.UpdateBoldedDates()
End If
mydbcon.Close()
Catch ex As MySqlException
MessageBox.Show(ex.Message)
Finally
mydbcon.Dispose()
End Try
End Try
End Sub
End Class

There is no row at position 0 in VB.NET

i have this 3 Forms in my project, on the second Form i have this edit button where i will edit the Listview item on the third Form, but when i select an item in the Listview and press edit, an error shows. It took me hours to find what's the problem, and i ended up here. Am i missing something?
this is my first form with listview in it.
Imports MySql.Data.MySqlClient
Public Class Form5
Public cd As Integer
Dim con As MySqlConnection
Private Sub Form5_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim con As New MySqlConnection
con.ConnectionString = "server=localhost;user id=root;database=db;password=root"
con.Open()
LoadPeople()
End Sub
Public Sub LoadPeople()
Dim sConnection As New MySqlConnection
sConnection.ConnectionString = "server=localhost;user id=root;database=db;password=root"
sConnection.Open()
Dim sqlQuery As String = "select * from candidate where cfname<>'Select a Candidate' AND candidacy='Filed'"
Dim sqlAdapter As New MySqlDataAdapter
Dim sqlCommand As New MySqlCommand
Dim TABLE As New DataTable
Dim i As Integer
With sqlCommand
.CommandText = sqlQuery
.Connection = sConnection
End With
With sqlAdapter
.SelectCommand = sqlCommand
.Fill(TABLE)
End With
LvPeople.Items.Clear()
For i = 0 To TABLE.Rows.Count - 1
With LvPeople
.Items.Add(TABLE.Rows(i)("idn"))
With .Items(.Items.Count - 1).SubItems
.Add(AddFieldValue(TABLE.Rows(i), ("cpos")))
.Add(AddFieldValue(TABLE.Rows(i), ("cfname")))
.Add(AddFieldValue(TABLE.Rows(i), ("cmname")))
.Add(AddFieldValue(TABLE.Rows(i), ("clname")))
.Add(AddFieldValue(TABLE.Rows(i), ("cparty")))
End With
End With
Next
End Sub
Private Function AddFieldValue(ByVal row As DataRow, ByVal fieldName As String) As String
If Not DBNull.Value.Equals(row.Item(fieldName)) Then
Return CStr(row.Item(fieldName))
Else
Return Nothing
End If
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Form17.Show()
End Sub
End Class
my 2nd Form
Imports MySql.Data.MySqlClient
Public Class Form17
Public cd As Integer
Public sConnection As New MySqlConnection
Private Sub Form17_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If sConnection.State = ConnectionState.Closed Then
sConnection.ConnectionString = "server=localhost;user id=root;database=db;password=root"
sConnection.Open()
End If
LoadPeople3()
End Sub
Public Sub LoadPeople3()
Dim sqlQuery As String = "select * from candidate where cfname<>'Select a Candidate'"
Dim sqlAdapter As New MySqlDataAdapter
Dim sqlCommand As New MySqlCommand
Dim TABLE As New DataTable
Dim i As Integer
With sqlCommand
.CommandText = sqlQuery
.Connection = sConnection
End With
With sqlAdapter
.SelectCommand = sqlCommand
.Fill(TABLE)
End With
lvPeople3.Items.Clear()
For i = 0 To TABLE.Rows.Count - 1
With lvPeople3
.Items.Add(TABLE.Rows(i)("idn"))
With .Items(.Items.Count - 1).SubItems
.Add(AddFieldValue(TABLE.Rows(i), ("cfname")))
.Add(AddFieldValue(TABLE.Rows(i), ("cmname")))
.Add(AddFieldValue(TABLE.Rows(i), ("clname")))
.Add(AddFieldValue(TABLE.Rows(i), ("cyr")))
End With
End With
Next
End Sub
Private Function AddFieldValue(ByVal row As DataRow, ByVal fieldName As String) As String
If Not DBNull.Value.Equals(row.Item(fieldName)) Then
Return CStr(row.Item(fieldName))
Else
Return Nothing
End If
End Function
Private Sub lvPeople3_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles lvPeople3.MouseClick
cd = lvPeople3.SelectedItems(0).Selected
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If cd = Nothing Then
MsgBox("Please choose a record to edit.", MsgBoxStyle.Exclamation)
Else
Dim sqlQuery As String = "SELECT * FROM candidate WHERE cid = '" & lvPeople3.SelectedItems(0).Text & "'"
Dim sqlAdapter As New MySqlDataAdapter
Dim sqlCommand As New MySqlCommand
Dim sqlTabble As New DataTable
With sqlCommand
.CommandText = sqlQuery
.Connection = sConnection
.ExecuteNonQuery()
End With
With sqlAdapter
.SelectCommand = sqlCommand
.Fill(sqlTabble)
End With
Form23.cd = lvPeople3.SelectedItems(0).Text
Form23.cfname = sqlTabble.Rows(0)("cfname")
Form23.cfname = sqlTabble.Rows(0)("cmname")
Form23.cfname = sqlTabble.Rows(0)("clname")
Form23.ShowDialog()
cd = Nothing
End If
End Sub
End Class
and my third Form
Imports MySql.Data.MySqlClient
Public Class Form23
Friend cd As Integer
Friend cfname As String
Friend clname As String
Friend cmname As String
Public sConnection As New MySqlConnection
Private Sub Form23_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If sConnection.State = ConnectionState.Closed Then
sConnection.ConnectionString = "server=localhost;user id=root;database=db;password=root"
sConnection.Open()
End If
TextBox2.Text = cfname
TextBox3.Text = clname
TextBox4.Text = cmname
End Sub
Private Sub SimpleButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SimpleButton1.Click
Dim conn As New MySqlConnection
Dim cmd As New MySqlCommand
conn.ConnectionString = "server = localhost; user id = root; database = db; password = root"
cmd.Connection = conn
conn.Open()
If TextBox1.Text = "" Then
MessageBox.Show("Please complete the required fields..", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Else
Dim sqlQuery As String = "UPDATE candidate SET cpos='" & ComboBox1.Text & "', cparty='" & TextBox1.Text & "', candidacy='Filed' WHERE cid='" & cd & "'"
Dim sqlCommand As New MySqlCommand
With sqlCommand
.CommandText = sqlQuery
.Connection = sConnection
.ExecuteNonQuery()
End With
MsgBox("Record Updated")
Dispose()
Form5.Show()
Form17.Hide()
End If
Form5.LoadPeople()
Form17.LoadPeople3()
Me.Close()
End Sub
End Class
In Button1_Click you are accessing the first DataRow of a DataTable without checking if there is one:
Form23.cfname = sqlTabble.Rows(0)("cfname")
Form23.cfname = sqlTabble.Rows(0)("cmname")
Form23.cfname = sqlTabble.Rows(0)("clname")
You can check if there is one row by using the DataTable.Rows property:
If sqlTabble.Rows.Count > 0 Then
Form23.cfname = sqlTabble.Rows(0)("cfname")
Form23.cfname = sqlTabble.Rows(0)("cmname")
Form23.cfname = sqlTabble.Rows(0)("clname")
End If
Since you are trying to get all records according to the user's selection, i guess that you're using the wrong field. You are using the display-field but you are filtering by the ID-field:
"SELECT * FROM candidate WHERE cid = '" & lvPeople3.SelectedItems(0).Text & "'"
Maybe this is what you actually want:
"SELECT * FROM candidate WHERE cfname = '" & lvPeople3.SelectedItems(0).Text & "'"
Note that you should not use string concatenation but sql-parameters to prevent sql injection.

DataGridview and MySQL Deleting rows with Checkbox

I have a Datagridview and I want to delete a row in my MySQL database.
I have some code but I get an error, it says ID is null. My ID is a string which is the value of the ID where the columns are checked. My first column "column 0" is a checkbox column
Here is the code:
Feel free to ask specific questions if you don't understand what I am asking.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim RowsToDelete As New List(Of DataGridViewRow)
Try
For Each row As DataGridViewRow In DataGridView1.Rows
If row.Cells(0).Value = True Then
DeleteRow(row.Cells(1).Value)
RowsToDelete.Add(row)
End If
Next
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
For Each rowtodelete In RowsToDelete
DataGridView1.Rows.Remove(rowtodelete)
next
End Sub
Private Sub DeleteRow(ByVal ID As Integer)
Dim MySQLCon As New MySqlConnection
Dim ConnectionString As String = "server=localhost;user id=root;password=;database=business elements"
MySQLCon.ConnectionString = ConnectionString
Dim CMD As MySqlCommand
MySQLCon.Open()
Try
CMD.Connection = MySQLCon
CMD.CommandText = "DELETE FROM `users` WHERE `ID` = " & ID
Catch ex As Exception
End Try
MySQLCon.Close()
MySQLCon.Dispose()
End Sub
Without seeing all of your code, something like this should work:
Dim sql as String
sql = "DELETE FROM `users` WHERE `ID` IN ("
For Each row As DataGridViewRow In DataGridView1.Rows
If row.Cells(0).Value = True Then
ID = row.Cells(1).Value
DeleteRow(row.Cells(1).Value)
RowsToDelete.Add(row)
sql += ID + ","
End If
Next
If sql.Left(sql.Length-1) = "," Then
CMD.CommandText = sql.Left(sql.Length-1) + ")"
CMD.Connection = MySQLCon
CMD.ExecuteNonQuery()
End If
Good luck.
Finally found the code:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim RowsToDelete As New List(Of DataGridViewRow)
Try
For Each row As DataGridViewRow In DataGridView1.Rows
If row.Cells(0).Value = True Then
DeleteRow(row.Cells(1).Value)
RowsToDelete.Add(row)
End If
Next
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
For Each rowtodelete In RowsToDelete
DataGridView1.Rows.Remove(rowtodelete)
Next
End Sub
Private Sub DeleteRow(ByVal ID As Integer)
Dim MySQLCon As New MySqlConnection
Dim ConnectionString As String = "server=localhost;user id=root;password=;database=business elements"
MySQLCon.ConnectionString = ConnectionString
Dim CMD As New MySqlCommand
CMD.CommandText = "DELETE FROM `users` WHERE `ID` = " & ID
MySQLCon.Open()
Try
CMD.Connection = MySQLCon
CMD.ExecuteNonQuery()
Catch ex As Exception
End Try
MySQLCon.Close()
MySQLCon.Dispose()
End Sub
For i As Integer = DataGridView2.Rows.Count - 1 To 0 Step -1
Dim c As Boolean
c = DataGridView2.Rows(i).Cells(0).Value
If c = True Then
=====================================================================================
Dim sql As String = "DELETE FROM Items WHERE ItemID=" & Int(DataGridView2(1, DataGridView2.Rows(i).Index).Value)
' ^^^^^^^^^^^^^^
'
Dim comm As New SqlCommand(sql, con)
con.Open()
Dim result As Integer = comm.ExecuteNonQuery
con.Close()
End If
Next

Inserting data into a MySQL table using VB.NET

I have a problem inserting data into a table on a MySQL database using a VB.NET application.
I have a simple form where when I set some data to the textboxes and I press a GO button, the code should execute a function called InsertCar() that takes all these values and insert them into the database and then return true if the transaction is done successfully or false otherwise. My problem is that nothing is being inserted into the table.
Imports MySql.Data.MySqlClient
Imports System.Data.Sql
Imports System
Imports System.Data
Public Class Form1
Dim connectionString As String = "Server=localhost; User Id=root; Password=123456; Database=uni_park_db"
Dim SQLConnection As MySqlConnection = New MySqlConnection
Dim oDt_sched As New DataTable()
//SOME CODE For other buttons//
//Code for a button where the InsertCar() function is called at the beginning//
Public Function InsertCar() As Boolean
SQLConnection = New MySqlConnection()
SQLConnection.ConnectionString = connectionString
Dim sqlCommand As New MySqlCommand
Dim str_carSql As String
Try
str_carSql = "insert into members_car (car_id, member_id, model, color, chassis_id, plate_number, code) values ('" + TextBox20.Text + "','" + TextBox20.Text + "','" + TextBox23.Text + "','" + TextBox24.Text + "','" + TextBox22.Text + "','" + TextBox21.Text + "','" + ComboBox1.SelectedItem + "')"
MsgBox(str_carSql)
sqlCommand.Connection = SQLConnection
sqlCommand.CommandText = str_carSql
sqlCommand.ExecuteNonQuery()
Return True
Catch ex As Exception
Return False
MsgBox("Error occured: Could not insert record")
End Try
End Function
End Class
I am using this MsgBox(str_carSql) to test if the SQL statement is correct and it is correct.
Any help will be appreciated.
UPDATE
I did the following and it stills not working
Public Function InsertCar() As Boolean
SQLConnection = New MySqlConnection()
SQLConnection.ConnectionString = connectionString
SQLConnection.Open()
Dim sqlCommand As New MySqlCommand
Dim str_carSql As String
Try
str_carSql = "insert into members_car (car_id, member_id, model, color, chassis_id, plate_number, code) values (#id,#m_id,#model,#color,#ch_id,#pt_num,#code)"
sqlCommand.Connection = SQLConnection
sqlCommand.CommandText = str_carSql
sqlCommand.Parameters.AddWithValue("#id", TextBox20.Text)
sqlCommand.Parameters.AddWithValue("#m_id", TextBox20.Text)
sqlCommand.Parameters.AddWithValue("#model", TextBox23.Text)
sqlCommand.Parameters.AddWithValue("#color", TextBox24.Text)
sqlCommand.Parameters.AddWithValue("#ch_id", TextBox22.Text)
sqlCommand.Parameters.AddWithValue("#pt_num", TextBox21.Text)
sqlCommand.Parameters.AddWithValue("#code", ComboBox1.SelectedItem)
sqlCommand.ExecuteNonQuery()
Return True
Catch ex As Exception
Return False
MsgBox("Error occured: Could not insert record")
End Try
End Function
UPDATE
The Insert is not working either, I will post the entire code maybe a problem is found elsewhere
Imports MySql.Data.MySqlClient
Imports System.Data.Sql
Imports System
Imports System.Data
Public Class Form1
Dim connectionString As String = "Server=localhost; User Id=root; Password=123456; Database=uni_park_db"
Dim SQLConnection As MySqlConnection = New MySqlConnection
Dim oDt_sched As New DataTable()
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
If SQLConnection.State = ConnectionState.Open Then
If TextBox1.Text = "" Then
MsgBox("Please Input a Valid ID")
Else
Dim myAdapter1 As New MySqlDataAdapter("select m.work_date as Work, m.time_in as Start, m.time_out as End from university_members as u inner join members_schedule as m on u.members_schedule_id=m.members_schedule_id where member_id = " & TextBox1.Text, SQLConnection)
Dim myAdapter As New MySqlDataAdapter("select member_id, first_name, last_name, type from university_members, members_schedule where(university_members.members_schedule_id = members_schedule.members_schedule_id) AND member_id = " & TextBox1.Text, SQLConnection)
Dim mydatatable As New DataTable()
Dim dataset As New DataSet()
myAdapter.Fill(mydatatable)
If (mydatatable.Rows.Count > 0 And myAdapter1.Fill(dataset)) Then
TextBox2.Text = mydatatable.Rows(0).Item("first_name")
TextBox3.Text = mydatatable.Rows(0).Item("last_name")
TextBox4.Text = mydatatable.Rows(0).Item("type")
TextBox20.Text = mydatatable.Rows(0).Item("member_id")
DataGridView1.DataSource = dataset.Tables(0)
oDt_sched = dataset.Tables(0)
Else
MsgBox("Check Error: ID Not Found! Enter a Valid ID")
TextBox1.Text = "Example 123456 "
TextBox2.Text = " "
TextBox3.Text = " "
TextBox4.Text = " "
End If
End If
Else
MsgBox("Database Connection Error: Database Connection Not Established. Please Connect First.")
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
Application.Exit()
End Sub
Private Sub DatabaseConnectToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DatabaseConnectToolStripMenuItem.Click
SQLConnection = New MySqlConnection()
SQLConnection.ConnectionString = connectionString
Try
If SQLConnection.State = ConnectionState.Closed Then
SQLConnection.Open()
MsgBox("Database Connection Sccessfully Established")
Else
SQLConnection.Close()
MsgBox("Database Connection Terminated")
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
TextBox1.Text = "Example 123456 "
TextBox2.Text = " "
TextBox3.Text = " "
TextBox4.Text = " "
DataGridView1.Columns.Clear()
DataGridView1.DataSource = Nothing
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim str_sql As String = ""
Dim obj_msadapter As MySqlDataAdapter
Dim i_maxh As Integer
Dim i_beginh As Integer
Dim ods_avail As DataSet = New DataSet()
Dim str_err As String = ""
Dim i_strth As Integer
Dim odt_avail As New DataTable()
Dim odrcol_avail() As DataRow
Dim str_range As String = ""
Try
'perform insert car here (boolean to see if the code continues running)
''''''''''''''''''''''''''
If InsertCar() Then
For Each odr As DataRow In oDt_sched.Rows
i_maxh = odr(2)
i_beginh = odr(1)
i_strth = odr(1) + 2
str_range = ""
str_sql = "select * from parked_cars where pwork_date='" & odr(0).ToString() & "'"
ods_avail = New DataSet()
obj_msadapter = New MySqlDataAdapter(str_sql, SQLConnection)
obj_msadapter.Fill(ods_avail)
odt_avail = ods_avail.Tables(0)
If odt_avail.Rows.Count < 210 Then
While (i_strth <= i_maxh)
odrcol_avail = odt_avail.Select("ptime_in='" + i_beginh.ToString() + "' and ptime_out='" + i_strth.ToString() + "'")
If odrcol_avail.Count < 30 Then
str_range += i_beginh.ToString() + ";" + i_strth.ToString()
Else
str_range += "0"
End If
i_strth += 2
i_beginh += 2
End While
FillSpots(str_range, odr(0).ToString())
Else
str_err += "no place on day: " + odr(0).ToString() + ";"
MsgBox("No place is found on this day")
End If
Next
End If
Catch ex As Exception
MsgBox("")
End Try
End Sub
Public Function FillSpots(ByVal blowf As String, ByVal _day As String) As Boolean
Dim str_unit As String
Dim i_count As Integer = 0
Dim str_i_strt As String
Dim str_i_end As String
Dim str_sql As String
Try
For Each str_unit In blowf.Split("0")
If str_unit <> "" Then
str_i_strt = str_unit.Split(";")(0)
str_i_end = str_unit.Split(";")(str_unit.Split(";").Length - 1)
str_sql = "insert into parked_cars values ('" + TextBox20.Text + "','" + _day + "','" + str_i_strt + "','" + str_i_end + "')"
End If
Next
Return True
Catch ex As Exception
Throw ex
End Try
End Function
Public Function InsertCar() As Boolean
SQLConnection = New MySqlConnection()
SQLConnection.ConnectionString = connectionString
SQLConnection.Open()
Dim sqlCommand As New MySqlCommand
Dim str_carSql As String
Try
str_carSql = "insert into members_car (car_id, member_id, model, color, chassis_id, plate_number, code) values (?id,?m_id,?model,?color,?ch_id,?pt_num,?code)"
sqlCommand.Connection = SQLConnection
sqlCommand.CommandText = str_carSql
sqlCommand.CommandType = CommandType.Text
sqlCommand.Parameters.AddWithValue("?id", TextBox20.Text)
sqlCommand.Parameters.AddWithValue("?m_id", TextBox20.Text)
sqlCommand.Parameters.AddWithValue("?model", TextBox23.Text)
sqlCommand.Parameters.AddWithValue("?color", TextBox24.Text)
sqlCommand.Parameters.AddWithValue("?ch_id", TextBox22.Text)
sqlCommand.Parameters.AddWithValue("?pt_num", TextBox21.Text)
sqlCommand.Parameters.AddWithValue("?code", ComboBox1.SelectedItem)
sqlCommand.ExecuteNonQuery()
Return True
Catch ex As Exception
Return False
MsgBox("Error occured: Could not insert record")
End Try
End Function
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
ComboBox1.ResetText()
TextBox21.Text = " "
TextBox22.Text = " "
TextBox23.Text = " "
TextBox24.Text = " "
DataGridView2.Columns.Clear()
DataGridView2.DataSource = Nothing
End Sub
End Class
Thanks everyone for the help. This is the solution that worked for me
Dim iReturn as boolean
Using SQLConnection As New MySqlConnection(connectionString)
Using sqlCommand As New MySqlCommand()
With sqlCommand
.CommandText = "INSERT INTO members_car (`car_id`, `member_id`, `model`, `color`, `chassis_id`, `plate_number`, `code`) values (#xid,#m_id,#imodel,#icolor,#ch_id,#pt_num,#icode)"
.Connection = SQLConnection
.CommandType = CommandType.Text // You missed this line
.Parameters.AddWithValue("#xid", TextBox20.Text)
.Parameters.AddWithValue("#m_id", TextBox20.Text)
.Parameters.AddWithValue("#imodel", TextBox23.Text)
.Parameters.AddWithValue("#icolor", TextBox24.Text)
.Parameters.AddWithValue("#ch_id", TextBox22.Text)
.Parameters.AddWithValue("#pt_num", TextBox21.Text)
.Parameters.AddWithValue("#icode", ComboBox1.SelectedItem)
End With
Try
SQLConnection.Open()
sqlCommand.ExecuteNonQuery()
iReturn = TRUE
Catch ex As MySqlException
MsgBox ex.Message.ToString
iReturn = False
Finally
SQLConnection.Close()
End Try
End Using
End Using
Return iReturn
After instantiating the connection, open it.
SQLConnection = New MySqlConnection()
SQLConnection.ConnectionString = connectionString
SQLConnection.Open()
Also, avoid building SQL statements by just appending strings. It's better if you use parameters, that way you win on performance, your program is not prone to SQL injection attacks and your program is more stable. For example:
str_carSql = "insert into members_car
(car_id, member_id, model, color, chassis_id, plate_number, code)
values
(#id,#m_id,#model,#color,#ch_id,#pt_num,#code)"
And then you do this:
sqlCommand.Parameters.AddWithValue("#id",TextBox20.Text)
sqlCommand.Parameters.AddWithValue("#m_id",TextBox23.Text)
' And so on...
Then you call:
sqlCommand.ExecuteNonQuery()
You need to open the connection first:
SQLConnection.Open();
Dim connString as String ="server=localhost;userid=root;password=123456;database=uni_park_db"
Dim conn as MySqlConnection(connString)
Dim cmd as MysqlCommand
Dim dt as New DataTable
Dim ireturn as Boolean
Private Sub Insert_Car()
Dim sql as String = "insert into members_car (car_id, member_id, model, color, chassis_id, plate_number, code) values (#car_id,#member_id,#model,#color,#chassis_id,#plate_number,#code)"
Dim cmd = new MySqlCommand(sql, conn)
cmd.Paramaters.AddwithValue("#car_id", txtCar.Text)
cmd.Paramaters.AddwithValue("#member_id", txtMember.Text)
cmd.Paramaters.AddwithValue("#model", txtModel.Text)
cmd.Paramaters.AddwithValue("#color", txtColor.Text)
cmd.Paramaters.AddwithValue("#chassis_id", txtChassis.Text)
cmd.Paramaters.AddwithValue("#plate_number", txtPlateNo.Text)
cmd.Paramaters.AddwithValue("#code", txtCode.Text)
Try
conn.Open()
If cmd.ExecuteNonQuery() > 0 Then
ireturn = True
End If
conn.Close()
Catch ex as Exception
ireturn = False
conn.Close()
End Try
Return ireturn
End Sub
your str_carSql should be exactly like this:
str_carSql = "insert into members_car (car_id, member_id, model, color, chassis_id, plate_number, code) values (#id,#m_id,#model,#color,#ch_id,#pt_num,#code)"
Good Luck
You need to use ?param instead of #param when performing queries to MySQL
str_carSql = "insert into members_car (car_id, member_id, model, color, chassis_id, plate_number, code) values (?id,?m_id,?model,?color,?ch_id,?pt_num,?code)"
sqlCommand.Connection = SQLConnection
sqlCommand.CommandText = str_carSql
sqlCommand.Parameters.AddWithValue("?id", TextBox20.Text)
sqlCommand.Parameters.AddWithValue("?m_id", TextBox20.Text)
sqlCommand.Parameters.AddWithValue("?model", TextBox23.Text)
sqlCommand.Parameters.AddWithValue("?color", TextBox24.Text)
sqlCommand.Parameters.AddWithValue("?ch_id", TextBox22.Text)
sqlCommand.Parameters.AddWithValue("?pt_num", TextBox21.Text)
sqlCommand.Parameters.AddWithValue("?code", ComboBox1.SelectedItem)
sqlCommand.ExecuteNonQuery()
Change the catch block to see the actual exception:
Catch ex As Exception
MsgBox(ex.Message)
Return False
End Try
First, You missed this one: sqlCommand.CommandType = CommandType.Text
Second, Your MySQL Parameter Declaration is wrong. It should be # and not ?
try this:
Public Function InsertCar() As Boolean
Dim iReturn as boolean
Using SQLConnection As New MySqlConnection(connectionString)
Using sqlCommand As New MySqlCommand()
With sqlCommand
.CommandText = "INSERT INTO members_car (`car_id`, `member_id`, `model`, `color`, `chassis_id`, `plate_number`, `code`) values (#xid,#m_id,#imodel,#icolor,#ch_id,#pt_num,#icode)"
.Connection = SQLConnection
.CommandType = CommandType.Text // You missed this line
.Parameters.AddWithValue("#xid", TextBox20.Text)
.Parameters.AddWithValue("#m_id", TextBox20.Text)
.Parameters.AddWithValue("#imodel", TextBox23.Text)
.Parameters.AddWithValue("#icolor", TextBox24.Text)
.Parameters.AddWithValue("#ch_id", TextBox22.Text)
.Parameters.AddWithValue("#pt_num", TextBox21.Text)
.Parameters.AddWithValue("#icode", ComboBox1.SelectedItem)
End With
Try
SQLConnection.Open()
sqlCommand.ExecuteNonQuery()
iReturn = TRUE
Catch ex As MySqlException
MsgBox ex.Message.ToString
iReturn = False
Finally
SQLConnection.Close()
End Try
End Using
End Using
Return iReturn
End Function