我正在创建一个删除用户帐户'我的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()
但是当它也是变量时,如何处理语句的表名方面?
答案 0 :(得分:2)
您可以查询信息架构表,然后根据它发送DROP查询。
例如,这将列出以A:
开头的所有表SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'A%'
SQL Server本身不支持DROP语句的WHERE子句,因为删除表不是经常发生的事情。你绝对不想像生产中那样进行批量删除。
删除用户帐户应该要求删除一个或多个表中的记录。如果您需要删除表格,可能需要考虑重新设计。一个简单的解释,想象一下应用程序中的10000个帐户,以及100个"表"每个帐户。您真的想在SQL数据库中拥有100万个表吗?您如何查询多个用户以生成管理报告?这样的事情导致了每个用户记录的常识,+用户详细信息的附加记录,例如地址,成员资格,权限等。