SQL Server数据库查询
我已经使用了ASP.net安装程序和我期望能够删除用户的标准用户表。首先要做到这一点,我需要从名为memberships的表中删除用户标识,然后删除用户。要做到这一点,我有两个文本框设置为用户ID和其他用户名称。SQL Server数据库查询
一个T-SQL语句,将先删除会员的用户ID,然后移动到删除用户名的任何想法,这是我的发言至今
else
{
try
{
connection.Open();
cmd = new SqlCommand("DELETE from Membershio
WHERE UserId ='" + deleteuserIDbox.Text + "'", connection);
cmd = new SqlCommand("DELETE from Users WHERE UserName ='" + deleteuserbox.Text + "'", connection);
cmd.ExecuteNonQuery();
update.Text = "Your data has been removed";
}
catch
{
update.Text = "Your data has not been deleted";
}
}
两张表,因此有关我需要删除用户ID,然后再在用户名
任何帮助非常appricated
如果理解正确,您的输入法有严重问题。
例如,
UserID UserName
1 testUser
2 testUser2
与应用程序中的逻辑;我可以在deleteuserIDbox中输入“1”并将“testUser2”输入到deleteuserbox中,然后删除userID 1,但是而不是用户名“testUser”。
如果您尚未执行此操作,则需要使用UserID上的外键关联这两个表。因此,该链接与UserID字段保持一致。
另一个问题是,你直接用用户输入执行查询,从而启用sql注入的可能性。
关于您的查询,您可以将“cmd.ExecuteNonQuery();”在你的两个cmd语句之间。
要使用当前的代码,你将需要执行第一个查询,然后设置在CommandText第二查询并执行。
using (SqlCommand cmd = connection.CreateCommand())
{
cmd.CommandText = "DELETE FROM Membership WHERE UserID = @UserID";
cmd.Parameters.AddWithValue("@UserID", deleteuserIDbox.Text);
connection.Open();
cmd.ExecuteNonQuery();
cmd.Paramters.Clear();
cmd.CommandText = "DELETE from Users WHERE UserName = @UserName";
cmd.Parameters.AddWithValue("@UserName", deleteuserbox.Text);
cmd.ExecuteNonQuery();
}
另一个选择是使用一个存储过程,它可以让你一起运行这两个查询。
另一种选择是级联删除。这里是a link关于如何做到这一点。
最后,你打开自己达到SQL Injection。你永远不要从用户那里获得输入,并将这些数据连接成一条SQL语句。你应该使用存储过程或参数化查询(就像我上面使用的)。
你没有执行相应的命令:
connection.Open();
cmd = new SqlCommand("DELETE from Membershio
WHERE UserId ='" +
deleteuserIDbox.Text + "'", connection);
cmd.ExecuteNonQuery();
cmd = new SqlCommand("DELETE from Users WHERE
UserName ='" + deleteuserbox.Text +
"'", connection);
cmd.ExecuteNonQuery();
而且,这些命令应该在一个事务中执行。
有点晚了,但我今天只注意到你的问题。
通过在数据库上执行此操作,您可以绕过所有好东西!你应该通过调用成员:: DeleteUser方法
http://msdn.microsoft.com/en-us/library/5xxz7y3a.aspx
你不应该用会员制的内部都乱做这在C#。
我注意到的第一件事是你在你的sql语句中使用字符串连接。你会想使用绑定变量:http://www.richquackenbush.com/2011/02/bind-variables.html有几个原因。接下来,接受一些你懒鬼的答案! – RQDQ 2011-04-06 13:29:47
强制性[XKCD参考](http://xkcd.com/327/)。 – SWeko 2011-04-06 13:36:36
如果您发布代码,XML或数据样本,请**在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮(“{}”),以精确地格式化和语法突出显示它! – 2011-04-08 21:09:20