2016-04-06 3 views
1

ich diesen Code bin mit einzigartigem Code zu generierenwollen mehrere numarical Passwort generieren und an SQL Server senden C#

public static string CreateRandomPassword() //If you are always going to want 8 characters then there is no need to pass a length argument 
    { 
     string _allowedChars = "1234567899999"; 
     Random randNum = new Random((int)DateTime.Now.Ticks); //Don't forget to seed your random, or else it won't really be random 
     char[] chars = new char[5]; 
     //again, no need to pass this a variable if you always want 8 

     for (int i = 0; i < 5; i++) 
     { 
      chars[i] = _allowedChars[randNum.Next(_allowedChars.Length)]; 

     } 
     return new string(chars); 

Und mit dieser, es zu SQL Server senden

protected void Button1_Click(object sender, EventArgs e) 
    { 
     var sand = CreateRandomPassword(); 
     int num; 
     if (int.TryParse(ids.Text,out num)) 
     { 
      for (int i = 1; i <= num; i++) 
      { 

       string strcon = ConfigurationManager.ConnectionStrings["slxserv"].ToString(); 
       using (SqlConnection con = new SqlConnection(strcon)) 

       using (SqlCommand cmd = new SqlCommand("INSERT INTO passwords (password) VALUES (@password) ")) 
       { 
        cmd.Connection = con; 
        cmd.Parameters.AddWithValue("@password",sand); 

        con.Open(); 
        cmd.ExecuteNonQuery(); 
        con.Close(); 
       } 
+0

Was ist das Problem? Warum musst du num mal dein Passwort eingeben? – Boo

+0

Es generiert das Passwort, aber wenn Sie versuchen, mehrere einfügen, wird das gleiche Passwort in verschiedenen Zeile hinzugefügt. zum Beispiel, wenn ich 6 Passwort erstellen seine sechs Passwort erstellen, aber alle Passwörter sind gleich –

+1

ja, einfügen bedeutet eine neue Zeile in sql einfügen, und Ihr Passwort wird einmal vor Ihren Schleifen generiert – Boo

Antwort

0

zunächst einmal setzen Sie Ihre Random randNum = new Random((int)DateTime.Now.Ticks); aus dem Verfahren CreateRandomPassword() und macht es statische

und wie sagte Boo diesen Teil setzte in für Schleife var sand = CreateRandomPassword();

so endgültiger Code wie folgen

static Random randNum = new Random((int)DateTime.Now.Ticks); 
public static string CreateRandomPassword() //If you are always going to want 8 characters then there is no need to pass a length argument 
    { 
     string _allowedChars = "1234567899999"; 

     char[] chars = new char[5]; 
     //again, no need to pass this a variable if you always want 8 
    for (int i = 0; i < 5; i++) 
    { 
     chars[i] = _allowedChars[randNum.Next(_allowedChars.Length)]; 

    } 
    return new string(chars); 
} 

protected void Button1_Click(object sender, EventArgs e) 
    { 
     int num; 
     if (int.TryParse(ids.Text,out num)) 
     { 
      for (int i = 1; i <= num; i++) 
      { 
       var sand = CreateRandomPassword(); 
       string strcon = ConfigurationManager.ConnectionStrings["slxserv"].ToString(); 
       using (SqlConnection con = new SqlConnection(strcon)) 

       using (SqlCommand cmd = new SqlCommand("INSERT INTO passwords (password) VALUES (@password) ")) 
       { 
        cmd.Connection = con; 
        cmd.Parameters.AddWithValue("@password",sand); 

        con.Open(); 
        cmd.ExecuteNonQuery(); 
        con.Close(); 
       } 
} 
aussehen
+1

Dank es durch die oben genannten Änderungen getan –

0

ersetzen

cmd.Parameters.AddWithValue ("@ Passwort", Sand);

mit

cmd.Parameters.AddWithValue ("@ password", CreateRandomPassword());

+1

Opps, gerade gesehen, was Boo sagte. Meine Antwort ist nur eine Ausarbeitung seiner richtigen Antwort. – HoganNZ

+0

nach der Änderung ist das Ergebnis gleich, wenn ich 4 Passwörter erzeuge sein Einfügen von vier Zeilen, aber mit gleichen Passwörtern –

Verwandte Themen