Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.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
C# 带有随机字符串生成器c的update语句#_C#_Sql_Oracle - Fatal编程技术网

C# 带有随机字符串生成器c的update语句#

C# 带有随机字符串生成器c的update语句#,c#,sql,oracle,C#,Sql,Oracle,我正在尝试使用随机生成器更新用户密码。update语句本身是一个相当简单的语句,但有case语句,因此根据用户的不同,他们将获得此特殊密码 我的代码用于生成随机值并更新记录,但是,它使用相同的密码更新所有记录,而不是为每个需要更新的记录生成一组新的随机值(在任何给定时间更新/创建的密码数量未知) 如果需要循环,如何将循环与SQL语句集成 下面是代码的大致示例: string colors[] = {"green", "blue", "yellow", "black"}; random r = n

我正在尝试使用随机生成器更新用户密码。update语句本身是一个相当简单的语句,但有case语句,因此根据用户的不同,他们将获得此特殊密码

我的代码用于生成随机值并更新记录,但是,它使用相同的密码更新所有记录,而不是为每个需要更新的记录生成一组新的随机值(在任何给定时间更新/创建的密码数量未知)

如果需要循环,如何将循环与SQL语句集成

下面是代码的大致示例:

string colors[] = {"green", "blue", "yellow", "black"};
random r = new Random();
int index= r.Next(0, colors.Length);
string color =colors[index].ToString();

query = "update table set password = '" + r.color + '";

我缺少什么???

您需要在更新查询中使用
where
条件来更新某些特定记录(让它成为
用户名
)。然后将密码保存为纯文本将不是一个好的选择,所以我建议您使用一些加密。另一个提示是必须将随机变量声明为全局变量

通过以下代码可以实现完整的功能:

Random r = New Random(); // this will be global
String colors[] = {"green", "blue", "yellow", "black"};    
int index = r.Next(0, colors.Length);
String colorPassword = colors[index].ToString(); // This will be the password
// Now encrypt the password 
byte[] byteData = System.Text.Encoding.ASCII.GetBytes(colorPassword);
byteData = new System.Security.Cryptography.SHA256Managed().ComputeHash(byteData );
String hashedPassword = System.Text.Encoding.ASCII.GetString(byteData );

query = "update table set password = '" + hashedPassword + "' where username='" + your_username + "'";
// Here you can execute the query

您不太清楚如何处理每个用户的密码更新。按照现在的代码设置方式,您可以一次性更新整个表,而无需任何循环。我认为你不应该对它不起作用感到惊讶

如果您确实对使用4种颜色中的一种随机更新表中的所有密码感兴趣,我将使用一个
update
语句而不是循环:

更新tbl
设置pwd=案例abs(mod(dbms_random.random,4))
当0时,则为“绿色”
当我说“蓝色”
当2时,则为“黄色”
当3时,则为“黑色”
终止

您的目标是使用随机值一次性更新表中的所有密码吗?或者你只想更新某个用户列表?@sstan问题是,
它用相同的密码更新所有记录,而不是为每个记录生成一组新的随机值
@Sherlock:这说明了发生了什么,而不是她的意图。关于如何更新数据库中的单个记录,还有很多问题,如何处理SQL中的密码,如何正确生成随机数,。。。您可能希望显示真实的,而不是粗糙的样本,它没有显示任何关于您计划如何更新单个记录的指示。我不喜欢这样,因为它很难维护,很难添加更多colors@un-lucky:我看不出这比OP目前拥有的更难维护,它比任何需要在一个循环中执行多个
update
语句的解决方案都要快得多。但是谢谢你的反馈。很好,我错了。更好的解决方案