If i load xml datatype column to a datatable then can i perform xml query on it? SQL server supports queries like .exist, .value on xml columns. I am trying those kind of queries on datatable.
Below is a part of code which shows where i am getting error.
Private Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click
Dim timDiff As Double
Dim iter1 As Integer
TextBox1.Text &= Button15.Text & vbNewLine & " Iterations: " & TextBox2.Text & vbNewLine
timDiff = DateAndTime.Timer
Dim SqlAdapter As New SqlDataAdapter
Dim strTemp As String
Dim iRow As Integer
Dim rConn As New SqlConnection("data source=pc91\sqlexpress;user id=admin;password=abc;initial catalog=Checklists;connect timeout=2000;")
rConn.Open()
SqlAdapter = New SqlDataAdapter
sDataSet = New DataSet
sqldatatable = Nothing
SqlAdapter.SelectCommand = New SqlCommand("select * from DesignChanges", rConn)
SqlAdapter.Fill(sDataSet, "tmpTable")
sqldatatable = sDataSet.Tables("tmpTable")
For iter1 = 1 To Val(TextBox2.Text)
Try
For iRow = 0 To sqldatatable.Rows.Count - 1
strTemp = sqldatatable.Rows(iRow).Item("AllotedTo").ToString
Next iRow
Catch ex As Exception
MsgBox(ex.ToString & Space(10) & Err.Description)
End Try
Next
rConn.Close()
SqlAdapter.Dispose()
rConn.Dispose()
sDataSet = Nothing
SqlAdapter = Nothing
rConn = Nothing
timDiff = DateAndTime.Timer - timDiff
TextBox1.Text &= " Total Time Taken: " & timDiff & vbNewLine
End Sub
Private Sub Button17_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button17.Click
bs.DataSource = sqldatatable
DataGridView1.DataSource = bs
End Sub
Private Sub Button18_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button18.Click
bs.Filter = "[UserApproval].exist ('/Root/Row[User=''xyz'']') =1"
End Sub
End Class
In the above code error comes like "The expression contains undefined function call UserApproval.exist()." for the line bs.Filter = "[UserApproval].exist ('/Root/Row[User=''xyz'']') =1" .
If i use .value function then error will come as "The expression contains undefined function call UserApproval.value()."
But the same functions works in SQL query for sql server.
Yes, you can. Did you read this? What kind of queries do not work well?
Related
Private Sub Charges()
Dim Query As String
Query = "Select * from Charges where DOctype='" & comboBoxTranType.Text & "'"
Dim cmd As New SqlCommand(Query, con)
con.Open()
Dim dataAdapter As New SqlDataAdapter(Query, con)
Dim dt As New DataTable
dataAdapter.Fill(dt)
dataAdapter.Dispose()
If dt.Rows.Count > 0 Then
LabelV001.Text = dt.Rows(0).Item("Head").ToString()
LabelV002.Text = dt.Rows(1).Item("Head").ToString()
LabelV003.Text = dt.Rows(2).Item("Head").ToString()
End If
If dt.Rows.Count > 0 Then
LabelFIELD1.Text = dt.Rows(0).Item("Equation").ToString()
LabelFIELD2.Text = dt.Rows(1).Item("Equation").ToString()
LabelFIELD3.Text = dt.Rows(2).Item("Equation").ToString()
End If
con.Close()
End Sub
SIR WITH YOUR HELP I GOT THE RESULT BEFORE, BUT CAUSE OF ERROR FOR FIELDTEXT3 i.e There is no row at position 2, equation 3 cannot be calculated, pls help me out,
Not sure why they were so quick to close your new question...I was building an answer for it.
Click on Project --> Add Reference
Switch to the COM option
Select the "Microsoft Script Control 1.0" entry and click OK.
Now you can use code like below, creating code for textCharges1 --> V001 through textCharges25 --> V025:
Public Class Form1
Private SC As New MSScriptControl.ScriptControl
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
SC.Language = "VBScript"
Dim ctl As Control
Dim ctlName, functionBody As String
functionBody = "Function {0}()" & vbCrLf & vbTab & "{0} = CDbl({1}.Text)" & vbCrLf & "End Function"
For i As Integer = 1 To 25
ctlName = "textCharges" & i
ctl = Me.Controls.Find(ctlName, True).FirstOrDefault
If Not IsNothing(ctl) Then
SC.AddObject(ctlName, ctl, True)
SC.AddCode(String.Format(functionBody, "V" & i.ToString("000"), ctlName))
End If
Next
LABELFIELD2.Text = "V001*V002/100"
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
Dim result = SC.Eval(LABELFIELD2.Text)
lblResult.Text = result
Catch ex As Exception
lblResult.Text = "{Error}"
End Try
End Sub
End Class
Running example:
Can some one please assist me? How to get rid of this error?
concurrency violation : Updated 0 of the expected 1 records
I have been struggling with the update command for the last couple of days. I tried many solutions from the internet but I am unable to resolve this issue.
Imports Microsoft.Office
Imports System.Data.OleDb
Public Class Form1
Dim dt As New DataTable
Dim cnn As New OleDb.OleDbConnection
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'filling analyst filter
Dim sText As String = String.Empty
Dim sConnString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\ecxx-store\Exxx xxxxsk\Txx Axxx\Enxx Flxxx\Source\Exx_Exxx_Flagging.accdb" 'Put your connection string in here
Using cn As New OleDb.OleDbConnection(sConnString)
cn.Open()
Dim cmd As New OleDb.OleDbCommand("SELECT Distinct Analyst FROM EF ORDER BY Analyst", cn)
Dim r As OleDb.OleDbDataReader = cmd.ExecuteReader()
While r.Read()
ComboBox7.Items.Add(r("analyst"))
End While
r.Close()
cn.Close()
End Using
'end of filling analyst filter
Me.EFTableAdapter.Fill(Me.Exx_Exxxx_ShippingDataset.EF)
Me.Label19.Text = "Welcome " & StrConv(Environment.MachineName, vbProperCase)
Me.Label20.Text = EFBindingSource.Count.ToString() & " entries"
'Setting Followup Status
Me.ComboBox8.Text = "Waiting for approval"
'disabling Second Analyst Details
Me.txtsecondanalyst.Enabled = False
Me.txtapproval.Enabled = False
Me.txtnotes.Enabled = False
End Sub
Private Sub txtdof_ValueChanged(sender As Object, e As EventArgs) Handles txtdof.ValueChanged
Me.txtnd.Text = DateDiff(DateInterval.Day, CDate(txtdof.Text), Now())
End Sub
Private Sub ComboBox7_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox7.SelectedIndexChanged
If IsNothing(Me.ComboBox8.Text) Then
EFBindingSource.Filter = "[Analyst] LIKE '%" & ComboBox7.Text & "%'"
Else
EFBindingSource.Filter = "[FollowupStatus] LIKE '%" & ComboBox8.Text & "%' AND [Analyst] Like '%" & ComboBox7.Text & "%'"
End If
'count of datagrid
Me.Label20.Text = EFBindingSource.Count.ToString() & " entries"
End Sub
Private Sub ComboBox8_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox8.SelectedIndexChanged
If IsNothing(Me.ComboBox7.Text) Then
EFBindingSource.Filter = "[FollowupStatus] LIKE '%" & ComboBox8.Text & "%'"
Else
EFBindingSource.Filter = "[FollowupStatus] LIKE '%" & ComboBox8.Text & "%' AND [Analyst] Like '%" & ComboBox7.Text & "%'"
End If
'count of datagrid
Me.Label20.Text = EFBindingSource.Count.ToString() & " entries"
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'update
Me.txtnd.Visible = True
Me.txtnd.Text = DateDiff(DateInterval.Day, CDate(txtdof.Text), Now())
On Error GoTo SaveErr
EFBindingSource.EndEdit()
EFTableAdapter.Update(Exx_Exxxx_ShippingDataset.EF)
Me.txtsecondanalyst.Enabled = False
Me.txtapproval.Enabled = False
Me.txtnotes.Enabled = False
MsgBox("Record Updated or Saved")
SaveErr:
End Sub
Private Sub Form1_Closed(sender As Object, e As EventArgs) Handles Me.Closed
EFBindingSource.EndEdit()
Me.TableAdapterManager1.UpdateAll(Me.Exx_Exxx_ShippingDataset)
End Sub
End Class
According to Concurrency violation: the UpdateCommand affected 0 of the expected 1 records. DB concurrencyException was unhandled
You call
Me.EFTableAdapter.Fill(Me.Exx_Exxxx_ShippingDataset.EF)
in Form_Load, but there is no guarantee that the rows aren't changed by the time you call
EFTableAdapter.Update(Exx_Exxxx_ShippingDataset.EF)
in Button1_Click
In the linked answer,
ADO.Net keeps the value of the column when it was selected from the database. When it performs the update the condition is that none of the columns have changed when you commit.
Perhaps you should call
dt = dt.GetChanges()
immediately before updating in Button1_Click, so that the datatable gets updated with the latest values in the database.
I have to filter datagridview using textbox.The code below I am using to fill gridview.getdata function of db class returns the datatable.
I am not using datasource property of gridview instead I am filing gridview using loop.
I can do searching using datasource property and dataview but i have not to fill datagridview directly from datasource property.
Sub griddesgn()
DataGridView1.Columns.Clear()
DataGridView1.Rows.Clear()
DataGridView1.Columns.Add("crime", "crime")
DataGridView1.Columns.Add("actname", "actname")
DataGridView1.Columns.Add("section", "section")
DataGridView1.Columns.Add("description", "description")
End Sub
Private Sub TEST_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
griddesgn()
Dim DBOBJ As New db
Dim DTT As DataTable = DBOBJ.getdata("SELECT crime,actname,section,description from natureofcomplaint_women")
If DTT.Rows.Count > 0 Then
For i As Integer = 0 To DTT.Rows.Count - 1
DataGridView1.Rows.Add()
DataGridView1.Rows(i).Cells("crime").Value = DTT.Rows(i).Item("crime") & ""
DataGridView1.Rows(i).Cells("actname").Value = DTT.Rows(i).Item("actname") & ""
DataGridView1.Rows(i).Cells("section").Value = DTT.Rows(i).Item("section") & ""
DataGridView1.Rows(i).Cells("description").Value = DTT.Rows(i).Item("description") & ""
Next
End If
End Sub
Use the WHERE statement in your SQL Query
"SELECT crime,actname,section,description from natureofcomplaint_women WHERE crime = " & txtSearch.text
(If you want to search on crime.)
Change to your needs.
Just repeat the datagrid fill you used above, but with an altereted SQL query each time you type/press the search button
I still think it's best to bind...
Sub griddesgn()
DataGridView1.Columns.Clear()
DataGridView1.Rows.Clear()
DataGridView1.Columns.Add("crime", "crime")
DataGridView1.Columns.Add("actname", "actname")
DataGridView1.Columns.Add("section", "section")
DataGridView1.Columns.Add("description", "description")
End Sub
Private Sub TEST_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
griddesgn()
Dim DBOBJ As New db
Dim DTT As DataTable = DBOBJ.getdata("SELECT crime,actname,section,description from natureofcomplaint_women")
Dim source1 as New BindingSource()
source1.DataSource = DTT
source1.Filter = "crime = '" & textboxtCrime.text & "'"
DataGrideView1.DataSource = source1
End Sub
Sub griddesgn()
DataGridView1.Columns.Clear()
DataGridView1.Rows.Clear()
DataGridView1.Columns.Add("crime", "crime")
DataGridView1.Columns.Add("actname", "actname")
DataGridView1.Columns.Add("section", "section")
DataGridView1.Columns.Add("description", "description")
End Sub
Private Sub TEST_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
griddesgn()
Dim DBOBJ As New db
Dim DTT As DataTable = DBOBJ.getdata("SELECT crime,actname,section,description from natureofcomplaint_women")
If DTT.Rows.Count > 0 Then
For i As Integer = 0 To DTT.Rows.Count - 1
If (DTT.Rows(i).Item("Crime").Contains(txtCrimeFilter.Text) AND & _
(DTT.Rows(i).Item("actname").Contains(txtActnameFilter.Text) AND & _
(DTT.Rows(i).Item("section").Contains(txtSectionFilter.Text) AND & _
(DTT.Rows(i).Item("description").Contains(txtDescriptionFilter.Text)
DataGridView1.Rows.Add()
DataGridView1.Rows(i).Cells("crime").Value = DTT.Rows(i).Item("crime") & ""
DataGridView1.Rows(i).Cells("actname").Value = DTT.Rows(i).Item("actname") & ""
DataGridView1.Rows(i).Cells("section").Value = DTT.Rows(i).Item("section") & ""
DataGridView1.Rows(i).Cells("description").Value = DTT.Rows(i).Item("description") & ""
End If
Next
End If
End Sub
Imports System.IO.Ports
Imports System.Text
Public Class Form4
Dim myStringBuilder As String
Dim insert As New OleDb.OleDbCommand
Dim cnn As New OleDb.OleDbConnection
Public user As String
Private Sub Serialport2_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort2.DataReceived
myStringBuilder = SerialPort2.ReadExisting()
Me.Invoke(New EventHandler(AddressOf UpdateControls))
End Sub
Private Sub UpdateControls(ByVal sender As Object, ByVal e As EventArgs)
Dim A As String = myStringBuilder
Dim Sqql As String
If Not cnn.State = ConnectionState.Open Then
cnn.Open()
End If
insert.Connection = cnn
Dim dt As New DataTable
Sqql = "SELECT * FROM `FileInfo` WHERE `File ID`='" & A & "'"
Dim cmd As New OleDb.OleDbDataAdapter(Sqql, cnn)
cmd.Fill(dt)
Dim i As Integer = dt.Rows.Count
Dim todaysdate As String = String.Format("{0:dd/MM/yyyy}", DateTime.Now)
If i = 1 Then
insert.CommandText = "INSERT INTO `File Log`(File ID,Name,Information,Time,Date) " & _
" VALUES('" & A & "','" & dt.Rows(0).Item("Name") & "','" & user & " telah" & dt.Rows(0).Item("Status") & "File" & "','" &
_
TimeOfDay & "','" & todaysdate & "')"
textBox1.Text += dt.Rows(0).Item("Name") & " " & TimeOfDay & " " & todaysdate &
Environment.NewLine
textBox1.Select(textBox1.TextLength, 0)
textBox1.ScrollToCaret()
insert.ExecuteNonQuery()
myStringBuilder = ""
Else
myStringBuilder = ""
textBox1.Text += A & Environment.NewLine
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
cnn = New OleDb.OleDbConnection
cnn.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0; Data Source=" & Application.StartupPath & "\data.mdb"
If SerialPort2 IsNot Nothing Then
SerialPort2.Close()
End If
SerialPort2 = My.Computer.Ports.OpenSerialPort("COM27", 9600, Parity.None, 8, StopBits.One)
textBox1.Text = "-- Door Have Open -- " & Environment.NewLine & Environment.NewLine
End Sub
Private Sub textBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles textBox1.TextChanged
End Sub End Class
in my serial monitor view it will appear correctly but in visual basic it will auto break line and not display the string in one line.
I Tried other method like serialport.readline() but nothing happen.
If you are having issues with extracting data from your serial port you could try this:
Sub SerialPort_DataReceived(sender As Object, e As SerialDataReceivedEventArgs)
Dim currentSP As SerialPort = Convert.ChangeType(sender, GetType(SerialPort))
Dim strBuilder As System.Text.StringBuilder = New System.Text.StringBuilder()
For index = 1 To currentSP.BytesToRead
strBuilder.Append(Convert.ChangeType(currentSP.ReadByte(), GetType(Char)))
Next
' Have a global string to allow the threads to have a shared resource
myString = strBuilder.ToString()
Me.Invoke(New EventHandler(AddressOf UpdateControls))
End Sub
It should work the same way as the SerialPort.ReadLine(), this approach also lets you manipulate the data however you want. Instead of working with a string you could always work the data like this:
Dim buffer As Byte() = New Byte(currentSP.BytesToRead) {}
buffer(index) = Convert.ChangeType(currentSP.ReadByte(), GetType(Byte))
So instead of appending the Char to the String you can add the Byte to the buffer
Dim str As String = MyCOMPort.ReadExisting()
If Me.InvokeRequired Then
Me.Invoke(New dlUpdateText(AddressOf updatetext), str)
Else
updatetext(str)
End If
First I populated the datagridview by data of sqlserver 2008 database table, now i have muliple rows in datagridview containing data, i am trying to update any row but, in the database table it replaces other rows data by the row data that iam trying to update
the code for update statement is given below
Plz help me
Dim cmd As New SqlCommand("Update EmployeeDetail Set Salary = '" &
dgvEmpDetail.Rows(0).Cells(1).Value & "', Experience ='" &
dgvEmpDetail.Rows(0).Cells(2).Value & "', Skills='" &
dgvEmpDetail.Rows(0).Cells(3).Value
& "' where Emp_ID = '" & dgvEmpDetail.Rows(0).Cells(0).Value & "'", con)
con.Open()
cmd.ExecuteNonQuery()
con.Close()
You've hard coded the row - dgvEmpDetail.Rows(0).
I imagine you are calling this in a loop. You should do something like:
For i As Integer = 0 To dgvEmpDetail.Rows.Count - 1
Dim cmd As New SqlCommand("Update EmployeeDetail Set Salary = '" & dgvEmpDetail.Rows(i).Cells(1).Value & "', Experience ='" & dgvEmpDetail.Rows(i).Cells(2).Value & "', Skills='" & dgvEmpDetail.Rows(i).Cells(3).Value()& "' where Emp_ID = '" & dgvEmpDetail.Rows(i).Cells(0).Value & "'", con)
con.Open()
cmd.ExecuteNonQuery()
con.Close()
Next
Your code is susceptible to SQL injection. You should put the update SQL in to a stored procedure - its faster and safer!
Protected Sub Page_Load()
If Not Page.IsPostBack Then
' Create a new table.
Dim taskTable As New DataTable("TaskList")
' Create the columns.
taskTable.Columns.Add("Id", GetType(Integer))
taskTable.Columns.Add("Description", GetType(String))
taskTable.Columns.Add("IsComplete", GetType(Boolean))
'Add data to the new table.
For i = 0 To 19
Dim tableRow = taskTable.NewRow()
tableRow("Id") = i
tableRow("Description") = "Task " + i.ToString()
tableRow("IsComplete") = False
taskTable.Rows.Add(tableRow)
Next
'Persist the table in the Session object.
Session("TaskTable") = taskTable
'Bind data to the GridView control.
BindData()
End If
End Sub
Protected Sub TaskGridView_PageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs)
TaskGridView.PageIndex = e.NewPageIndex
'Bind data to the GridView control.
BindData()
End Sub
Protected Sub TaskGridView_RowEditing(ByVal sender As Object, ByVal e As GridViewEditEventArgs)
'Set the edit index.
TaskGridView.EditIndex = e.NewEditIndex
'Bind data to the GridView control.
BindData()
End Sub
Protected Sub TaskGridView_RowCancelingEdit()
'Reset the edit index.
TaskGridView.EditIndex = -1
'Bind data to the GridView control.
BindData()
End Sub
Protected Sub TaskGridView_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs)
'Retrieve the table from the session object.
Dim dt = CType(Session("TaskTable"), DataTable)
'Update the values.
Dim row = TaskGridView.Rows(e.RowIndex)
dt.Rows(row.DataItemIndex)("Id") = (CType((row.Cells(1).Controls(0)), TextBox)).Text
dt.Rows(row.DataItemIndex)("Description") = (CType((row.Cells(2).Controls(0)), TextBox)).Text
dt.Rows(row.DataItemIndex)("IsComplete") = (CType((row.Cells(3).Controls(0)), CheckBox)).Checked
'Reset the edit index.
TaskGridView.EditIndex = -1
'Bind data to the GridView control.
BindData()
End Sub
Private Sub BindData()
TaskGridView.DataSource = Session("TaskTable")
TaskGridView.DataBind()
End Sub
</script>
I have a access connection with textbox as data feeder to database change it to SQL if u want. The code is:
Imports System
Imports System.Data
Imports System.Data.OleDb
Public Class Form2
Dim conaccess As New OleDbConnection
Dim conreader As OleDbDataReader
Dim concmd As New OleDbCommand
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
DataGridView1.EditMode = False
conaccess.ConnectionString = "Provider=Microsoft.jet.oledb.4.0;data source=d:\vijay.mdb"
conaccess.Open()
loadGrid()
End Sub
Private Sub loadGrid()
Dim access As String
access = "select * from vijay"
Dim DataTab As New DataTable
Dim DataAdap As New OleDbDataAdapter(access, conaccess)
DataAdap.Fill(DataTab)
DataGridView1.DataSource = DataTab
End Sub
Private Sub new_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles new_btn.Click
Dim no As String
no = "select Max(ID) from vijay"
Dim concmd As New OleDbCommand(no, conaccess)
conreader = concmd.ExecuteReader
If (conreader.Read) Then
If (IsDBNull(conreader(0))) Then
id_txt.Text = "1"
Else
id_txt.Text = conreader(0) + 1
End If
name_txt.Clear()
branch_txt.Clear()
age_txt.Clear()
class_txt.Clear()
gen_txt.Clear()
End If
End Sub
Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
Dim i As Integer
i = DataGridView1.CurrentRow.Index
Try
id_txt.Text = DataGridView1.Item(0, i).Value
name_txt.Text = DataGridView1.Item(1, i).Value
class_txt.Text = DataGridView1.Item(2, i).Value
gen_txt.Text = DataGridView1.Item(3, i).Value
branch_txt.Text = DataGridView1.Item(4, i).Value
age_txt.Text = DataGridView1.Item(5, i).Value
Catch ex As Exception
End Try
End Sub
Private Sub del_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles del_btn.Click
Dim delcmd As New OleDbCommand("delete from vijay where id=" & id_txt.Text & " ", conaccess)
delcmd.ExecuteNonQuery()
MsgBox("Record is deleted")
loadGrid()
id_txt.Clear()
name_txt.Clear()
branch_txt.Clear()
age_txt.Clear()
class_txt.Clear()
gen_txt.Clear()
End Sub
Private Sub save_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles save_btn.Click
Dim access As String = String.Format("INSERT INTO vijay (Name,Class,Branch,Gender,Age) VALUES('{0}','{1}','{2}','{3}','{4}')", name_txt.Text, class_txt.Text, branch_txt.Text, gen_txt.Text, age_txt.Text)
concmd.Connection = conaccess
concmd.CommandText = access
concmd.ExecuteNonQuery()
MsgBox("Record Successfully Saved")
loadGrid()
id_txt.Clear()
name_txt.Clear()
branch_txt.Clear()
age_txt.Clear()
class_txt.Clear()
gen_txt.Clear()
End Sub
Private Sub up_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles up_btn.Click
Dim access As String
access = "UPDATE vijay SET Name = '" & name_txt.Text & "', Age = '" & age_txt.Text & "', Gender ='" & gen_txt.Text & "' , Branch ='" & branch_txt.Text & "' , Class = '" & class_txt.Text & "' where id=" & id_txt.Text & ""
Dim cmd As New OleDbCommand(access, conaccess)
cmd.ExecuteNonQuery()
loadGrid()
id_txt.Clear()
name_txt.Clear()
branch_txt.Clear()
age_txt.Clear()
class_txt.Clear()
gen_txt.Clear()
End Sub
End Class
Use looping and parameter (to handle sql injection):
con.Open() 'Open connection to database
'Looping throung dgv
For i As Integer = 0 To dgvEmpDetail.Rows.Count - 1
If IsDBNull(dgvEmpDetail.Rows(i).Cells("Emp_ID").Value) Then Exit For
Dim cmd As New SqlCommand("Update EmployeeDetail Set [Salary] = ?, [Experience]=?, [Skills]=? WHERE [Emp_ID] =?", con)
With cmd.Parameters
.AddWithValue("#Salary", dgvEmpDetail.Rows(i).Cells("Salary").Value )
.AddWithValue("#Experience", dgvEmpDetail.Rows(i).Cells("Experience").Value )
.AddWithValue("#Skills", dgvEmpDetail.Rows(i).Cells("Skills").Value )
.AddWithValue("#Emp_ID", dgvEmpDetail.Rows(i).Cells("Emp_ID").Value )
End With
cmd.ExecuteNonQuery()
Next i
con.Close() 'Close connection with Database