0
 Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim s As New Staff
    Dim strConn As String

    strConn = ConfigurationManager.ConnectionStrings("ConnectionString").ToString
    Dim conn As New SqlConnection(strConn)

    Dim strSql As String
    strSql = "SELECT StaffID FROM Staff"
    Dim cmd As New SqlCommand(strSql, conn)

    Dim daMember As New SqlDataAdapter(cmd)
    Dim ds As New DataSet

    conn.Open()
    daMember.Fill(ds, "Staff")
    Dim i As Integer = ds.Tables("Staff").Rows.Count - 1
    For Each dr As DataRow In ds.Tables("Staff").Rows
        strSql = "Update CIOPassword SET CIPassword=@CI, COPassword = @CO WHERE StaffID=@id"
        Dim cmd2 As New SqlCommand(strSql, conn)
        Dim output1 As String = ""
        Dim output2 As String = ""
        Dim random As New Random()

        Dim val, val2 As Integer
        For j As Integer = 0 To 9
            val = random.[Next](1, 36)
            val2 = random.[Next](1, 36)
            output1 += ChrW(IIf(val <= 26, 64 + val, (val - 27) + 48))
            output2 += ChrW(IIf(val2 <= 26, 64 + val2, (val2 - 27) + 48))
        Next
        cmd2.Parameters.AddWithValue("@CI", output1)
        cmd2.Parameters.AddWithValue("@CO", output2)
        cmd2.Parameters.AddWithValue("@id", dr(0))
        cmd2.ExecuteNonQuery()
    Next
    GridView1.DataBind()
    conn.Close()
End Sub

基本的に、ボタンがクリックされるたびに2つの乱数で各レコードを更新しようとしています。現在の問題は、システムがレコードを更新しますが、データが間違っていたことです。たとえば、当然のことながら、すべてのデータは異なる必要があります(ランダムに文字列)が、一部の行では同じデータで更新されましたが、ランダムに、row1、row2、row3は列1と2でまったく同じデータを持ち、行3は異なるデータを持ちます。 row1row2同じデータrow3ro4異なるデータ。ランダムな順序です。Forループでテストを行うためにMsgBoxを追加すると、データはすべての異なるデータで正しく更新されました。

4

2 に答える 2

3

オブジェクトを作成するたびRandomに、現在の時間をシードとして使用して新しいランダム シーケンスが作成されます。Random多数のオブジェクトを同時に作成すると、それらはすべて同じシードを持つため、同じシーケンスが生成されます。そのため、オブジェクトを 1 つだけ作成し、Random完了するまで同じオブジェクトを再利用する必要があります。ループの実行が速すぎると、「ランダム」でなくなるため、ループ内で新しいものを作成し続けないでください。

于 2012-06-27T16:29:42.240 に答える
0

このサイトを見てください。

http://www.brettb.com/RandomNumbersInDotNet.asp

あなたrandom.[Next]は間違っているかもしれません。

于 2012-06-27T16:30:03.577 に答える