Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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 server中删除前缀相同的所有表-vb.net_Sql_Vb.net - Fatal编程技术网

从SQL server中删除前缀相同的所有表-vb.net

从SQL server中删除前缀相同的所有表-vb.net,sql,vb.net,Sql,Vb.net,我正在为我的vb.net应用程序创建“删除用户帐户”按钮。用户可能创建了一些表,这些表需要与用户帐户一起删除。用户创建的任何表都将使用用户id和数字命名。例如:“sam_21”、“sam_45”。如何删除所有以“sam_”开头的表 会不会是这样的: dim userID = Users.Identity.Name cmd = New SqlCommand("DROP table_name WHERE table_name LIKE @userId") cmd.Parameters.AddW

我正在为我的vb.net应用程序创建“删除用户帐户”按钮。用户可能创建了一些表,这些表需要与用户帐户一起删除。用户创建的任何表都将使用用户id和数字命名。例如:“sam_21”、“sam_45”。如何删除所有以“sam_”开头的表

会不会是这样的:

 dim userID = Users.Identity.Name
 cmd = New SqlCommand("DROP table_name WHERE table_name LIKE @userId")
 cmd.Parameters.AddWithValue("@userId", userID & "_%")
 dc.Open()
 cmd.ExecuteNonQuery()
 dc.Close()
 Membership.DeleteUser(User.Identity.Name)

 FormsAuthentication.SignOut()
 FormsAuthentication.RedirectToLoginPage()

但是,当语句的表名方面也是变量时,我该如何处理它呢?

您可以查询信息架构表,然后基于此发送DROP查询

例如,这将列出以以下字母开头的所有表:

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'A%'
SQL Server本机不支持DROP语句的WHERE子句,因为删除表不是经常发生的事情。您肯定不希望像在生产中那样进行大规模删除


删除用户帐户应该删除一个或多个表中的记录。如果需要删除表,您可能需要考虑重新设计。简单解释一下,想象一下应用程序中的10000个帐户,以及100个“表”。“每个帐户。您真的希望SQL数据库中有100万个表吗。您将如何查询多个用户以生成用于管理的报告?诸如此类的事情导致了一种常识,即每个用户都有一个记录,再加上用户详细信息的附加记录,如地址、成员资格、权限等。

我明白了。因此,我首先选择所有表,然后删除它们。对不起,我的无知,在那之后我该如何放弃它们?填充一个数据集,然后从表中提取每个名称,并将这些名称输入到drop命令中?是的,我尽一切努力避免使用用户创建的表。由于许多原因,这超出了我的设计能力(我无法创建一个具有设置的数字或列的表,因为数据随用户选择而变化)。每个用户只能有一个或两个这样的表。@Cory:您可以填写一个数据集,是的。但由于它只是一个表,一个更简单的选择是创建一个读卡器,然后使用,如图所示,或者使用数据适配器填充一个表,如图所示。