Как сделать функцию удаления в VB.NET использование SQL
Короче говоря, я хочу сделать функцию SQL delete либо по порядковому местоположению, либо по gridview.selectedrow. Я пытался и не раз терпел неудачу. Я прошу помощи в решении этого вопроса.
Private Sub Single_delete() Try Dim sqlcon As New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=c:\users\jj\documents\visual studio 2015\Projects\WindowsApplication3\WindowsApplication3\Database1.mdf;Integrated Security=True") Dim sqladapt = New SqlDataAdapter("Select * from " + "[" + TreeView1.SelectedNode.Text.ToString, sqlcon) sqlcon.Open() Dim cmd As SqlClient.SqlCommand Dim sql As String = "Delete from " + "[" + TreeView1.SelectedNode.Text.ToString + "]" + " where Id= " + Database1DataSet.Tables(TreeView1.SelectedNode.ToString).Columns("Id").Ordinal.ToString cmd = New SqlClient.SqlCommand(sql, sqlcon) cmd.Parameters.AddWithValue("@id", Database1DataSet.Tables(TreeView1.SelectedNode.ToString).Columns("Id").Ordinal.ToString) cmd.ExecuteNonQuery() sqlcon.Close() MessageBox.Show("Record deleted") Catch ex As Exception MsgBox(ex.Message) End Try End Sub
Я ценю вашу помощь.
Что я уже пробовал:
Я попытался переключиться между порядковыми номерами, используя столбец "ID" в качестве источника текста, а также попытался сделать выбранное удаление сетки. Когда я сделал выбранное удаление gridrow, появилось сообщение, в котором говорилось, что запись удалена, но ни одна запись не была удалена из базы данных.
[no name]
Вы получаете "запись удалена", потому что вы не проверяете, была ли запись на самом деле удалена или нет, поэтому она будет отображаться каждый раз.
Зачем вам преобразовывать объект, который уже является строкой, в строку? Какой цели это служит?
Почему вы создаете параметр, а затем не используете его в своем запросе?
Почему вы создаете только один параметр, а не 2, как должно быть?
Member 11856456
Если я не изменю его в строку, то получу сообщение об ошибке "преобразование из строки" delete from [table2] where Id = "to type' Double ' is not valid"
предполагается, что мой параметр равен числу в столбце ID.
не уверен, что вы подразумеваете под созданием 2 параметров?
[no name]
Кто сказал что-нибудь об удостоверении личности? Текст уже является строкой, так почему же вы вызываете ToString для объекта, который уже является строкой?
"мой параметр должен быть", хорошо? Почему вы не ответили на вопрос?
Почему вы утруждаете себя созданием параметра и даже не используете его?
"что вы подразумеваете под созданием 2 параметров", как вы можете не знать? Вместо этого вы создали параметр для своего запроса, если 2, то один для идентификатора, почему вы не создали параметр для SelectedNode? Это простой вопрос. Не то чтобы вы использовали этот параметр, если бы создали его, поскольку вы не используете уже созданный параметр.
Maciej Los
Ваш код таков SQL-инъекция уязвимая!