Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从数据库中删除datagridview中的选定行_Sql_Sql Server_Vb.net - Fatal编程技术网

Sql 从数据库中删除datagridview中的选定行

Sql 从数据库中删除datagridview中的选定行,sql,sql-server,vb.net,Sql,Sql Server,Vb.net,我正在尝试使用SQL Server删除用户在datagridview中选择的行 我有一个datagridview,它加载数据库的内容,在本例中是Username和Password。 请记住,每个用户名在数据库中都是唯一的,因此我应该能够使用唯一的用户名删除每一行 我目前的SQL是从“Username”=?的“Users&Passwords”中删除,我不确定这是否完全正确,但是每当我单击QueryBuilder时,它似乎会接受它 我必须尝试这样做的代码如下: Private Sub btn

我正在尝试使用SQL Server删除用户在datagridview中选择的行

我有一个datagridview,它加载数据库的内容,在本例中是
Username
Password
。 请记住,每个用户名在数据库中都是唯一的,因此我应该能够使用唯一的用户名删除每一行

我目前的SQL是从“Username”=?的“Users&Passwords”中删除,我不确定这是否完全正确,但是每当我单击
QueryBuilder
时,它似乎会接受它

我必须尝试这样做的代码如下:

    Private Sub btn_remove_Click(sender As Object, e As EventArgs) Handles btn_remove.Click
        For Each row As DataGridViewRow In DataGridView1.SelectedRows
            Dim usernametodelete As String = DataGridView1.SelectedRows(0).Cells(0).Value.ToString
            'TextBox1.Text += usernametodelete
            Me.Users_PasswordsTableAdapter.DeleteUser(usernametodelete)
            Me.Users_PasswordsTableAdapter.Fill(Me.ManageUsersDataSet._Users_Passwords)
        Next
    End Sub

我希望当用户单击
Remove user(s)
按钮时,从datagridview中选择的行将从数据库中删除这些行。任何帮助都将不胜感激。

您的参与比您需要的稍微多一些。理想情况下,您应该采取以下步骤:

0)重命名您的表,使其不包含&字符-这只是自找麻烦

1) 使用如下过程将表添加到数据集:右键单击设计图面,新建tableadapter,配置连接字符串,将查询设置为
SELECT*FROM Username-WHERE-like@Username
,确保设置了其他内容,例如是否要生成dbdirect方法,以及是否希望数据集刷新新值

2) 在“数据源”窗口中(默认情况下可能不显示,请在visual studio菜单的上找到它),将“用户”节点从“数据源”窗口拖放到窗体上。这将创建绑定到类型化datatable的datagridview,还将创建dataset、tableadapter、tableadaptermanager(不需要;可以删除)、bindingnavigator工具条(也不需要,但上面有一个方便的预连线保存按钮)和bindingsource。它还将向form_load事件处理程序中预填充一些代码,以填充datatable

3) 就是这样-表单有一个网格,绑定到一个数据表。该网格能够删除行-单击行标题并按键盘上的删除按钮,行消失。单击toolstrip中的save图标,更改将保留到数据库中。您唯一需要做的就是首先将数据放入表中。我给出了一个SQL,它允许您选择一些要加载的用户名,但是您可以通过将表单_load中的代码行更改为:

yourTableAdapterName.Fill(yourDatasetname.YourDatatableName, "%")
将百分比作为名称传递就像DOS中的*通配符。LIKE%将选择所有记录。当然,您也可以保留默认设置(它将引用toolstrip上的文本框),而是运行程序,在toolstrip上的文本框中添加一个%并单击“填充”。或者,您可以将JOHNSMITH或JOHN%放入文本框并填充,以分别加载该用户/这些用户

希望你已经完成了1和2

关于这些东西是如何工作的背景故事:

DataTables是数据库中表的客户端表示形式。它们并不包含数据库中的所有数据,只包含您希望处理的部分数据。当您从数据库加载一行时,您可以对其进行编辑、删除(标记为已删除),并且当您调用
tableAdapter.Update(yourtable)
时,您所做的更改将保留到数据库中。请注意,即使它被称为
Update
,该方法仍将保存新行(通过执行INSERT)、已删除行(sqldelete)和更新(sqlupdate)。如果datatable从数据库中添加了4行laodd,然后添加了2行新行,对加载的3行进行更改并删除第4行,则调用
tableadapter.Update
将所有这些更改保存到数据库中。您不需要通过调用tableadapter.insert/update/delete来选择datatable来手动持久化这些更改。因此,使用tableadapter的流程如下:

tableAdapter.Fill(datatable, maybe,parameters,to,control,the,fill,here)  

'work with the datatable here, change, insert, delete. Use loops/code, use the UI, etc

tableAdapter.Update(datatable) 'save changes

你的参与比你需要的稍微多一些。理想情况下,您应该采取以下步骤:

0)重命名您的表,使其不包含&字符-这只是自找麻烦

1) 使用如下过程将表添加到数据集:右键单击设计图面,新建tableadapter,配置连接字符串,将查询设置为
SELECT*FROM Username-WHERE-like@Username
,确保设置了其他内容,例如是否要生成dbdirect方法,以及是否希望数据集刷新新值

2) 在“数据源”窗口中(默认情况下可能不显示,请在visual studio菜单的上找到它),将“用户”节点从“数据源”窗口拖放到窗体上。这将创建绑定到类型化datatable的datagridview,还将创建dataset、tableadapter、tableadaptermanager(不需要;可以删除)、bindingnavigator工具条(也不需要,但上面有一个方便的预连线保存按钮)和bindingsource。它还将向form_load事件处理程序中预填充一些代码,以填充datatable

3) 就是这样-表单有一个网格,绑定到一个数据表。该网格能够删除行-单击行标题并按键盘上的删除按钮,行消失。单击toolstrip中的save图标,更改将保留到数据库中。您唯一需要做的就是首先将数据放入表中。我给出了一个SQL,它允许您选择一些要加载的用户名,但是您可以通过将表单_load中的代码行更改为:

yourTableAdapterName.Fill(yourDatasetname.YourDatatableName, "%")
将百分比作为名称传递就像DOS中的*通配符。LIKE%将选择所有记录。当然,您也可以保留默认设置(它将引用toolstrip上的文本框),而是运行程序,在toolstrip上的文本框中添加一个%并单击“填充”。或者,您可以将JOHNSMITH或JOHN%放入文本框并填充,以分别加载该用户/这些用户

希望你是个好朋友