0

ウィンドウフォームでC#のプロジェクトをやっています

私は現在、学生をランダムに作成できるボタンを実行しようとしていますが、それらの学生は自動生成する必要がある学生IDでタグ付けする必要があります..しかし、自動生成をどのように行うべきかわかりません...私は以下のコードで何かをしました、しかし、学生IDが順番に並んでいないことがわかりました...順番に並べる必要があります自動生成された学生IDを順番に作成し、ランダムな学生データでタグ付けする方法はありますか?? ランダムな学生であり、学生IDはシーケンスです...私が意味するシーケンスは1、2、3です....そして私はすでに主キーを持っています

前もって感謝します

ランダムデータのクラスを作成します

public static class StudentRegister
  {
    private static Random s = new Random();
    static string[] student = new string[] { "wei ting", "jin ling", "wei wei", "shi ya", "yi ting", "an qin", "lian en"};
    public static string GetStudent()
    {
      return student[s.Next(0, student.Count())];
    }

    static string[] studentID = new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20"" };
    public static string GetStudentID()
    {
      return studentID[s.Next(0, studentID.Count())];
    }


  }

私はこのようなことを試みます: 編集:しかし、停止した後に問題が発生し、フォームを再度実行すると、1 が再度コールバックされます。コードを変更するにはどうすればよいですか? 教えてください...前の例のように続行したいのですが、3つのランダムな名前が既に挿入されているため、学生IDは1,2,3である必要があります。次に、このフォームを閉じてフォームを再実行し、挿入します別の 3 つのランダムな名前は、4 ではなく 1 から始まります

public static class StudentRegister
 {
  static int NextID = 0;
  private static Random s = new Random();
  static string[] student = new string[] { "wei ting", "jin ling", "wei wei", "shi ya",
    "yi ting", "an qin", "lian en" };
  public static string GetStudent()
  {
   return student[s.Next(0, student.Count())];
  }

  public static string GetStudentID()
  {
   ++NextID;
   return NextID.ToString();
  }
 }
4

1 に答える 1

1

C#コードで一意のIDを自動インクリメントすることはできません。MSSQL に作業を任せます。次に、新しいレコード (StudentName などを含む) を挿入すると、ID が生成されます。

http://www.w3schools.com/Sql/sql_autoincrement.asp

編集:

わかりました、これはテストされていませんが、このようなものです... C# コードを変更します。

public static class StudentRegister
{
    private static Random s = new Random();
    static string[] student = new string[] { "wei ting", "jin ling", "wei wei", "shi ya", "yi ting", "an qin", "lian en" };
    public static string GetStudent()
    {
        return student[s.Next(0, student.Count())];
    }
}


private void btnStudentAdd_Click(object sender, EventArgs e)
{
    using (var conn = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=student;Integrated Security=True"))
    {
        conn.Open();
        using (var cmd = new SqlCommand("INSERT INTO StudentList (StudentName) VALUES (@Name)", conn))
        {
            cmd.Parameters.Add("@Name", SqlDbType.VarChar);
            for (int i = 0; i < 3; i++)
            {
                cmd.Parameters["@Name"].Value = StudentRegister.GetStudent();
                cmd.ExecuteNonQuery();
            }
        }
        conn.Close();
    }
    GridviewBind();  //bind the create data back to datagridview
}

ID 列をテーブルに追加する必要があります。保持する必要があるテーブルにはデータがないと想定しているので、テーブルを削除して再作成するだけです。

DROP TABLE StudentList;

CREATE TABLE StudentList
(
    id int PRIMARY KEY,
    StudentName varchar (15),
    StudentId int IDENTITY(1,1)
);
于 2011-07-08T01:19:48.933 に答える