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 随机名称它再次从 1 开始而不是 4

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
}

您需要将标识列添加到表中。我假设表中没有您需要保留的数据,所以只需删除并重新创建表。

DROP TABLE StudentList;

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