Как генерировать автоматические данные в последовательности, даже если после повторного запуска формы? - PullRequest
0 голосов
/ 08 июля 2011

Я делаю проект на C # в форме окна

В настоящее время я пытаюсь сделать кнопку, которая может случайным образом создать студента, но эти студенты должны пометить с идентификатором студента, который должен автоматически генерировать ... но яне уверен, как мне сделать авто генерацию ... я сделал что-то в приведенном ниже коде, но обнаружил, что идентификатор студента не в последовательности ... мне нужно, чтобы он был в последовательности, есть ли способ создать студента авто генерацииидентификатор в последовательности и тег со случайными данными студента - это студент, который является случайным, и идентификатор студента - это последовательность ... последовательность, которую я имею в виду, это 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())];
    }


  }

я пробую что-то вроде этого: edited: но у меня возникла проблема после того, как я остановлю его, выполню и перезапущумоя форма снова, она перезвонит 1 снова, как я собираюсь изменить код?можете сказать мне ... я хочу, чтобы он продолжал, как пример предыдущий, который я уже вставил, 3 случайных имени, поэтому идентификатор студента должен 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();
  }
 }

1 Ответ

1 голос
/ 08 июля 2011

Я бы не обработал автоматическое увеличение уникального идентификатора в вашем коде c #.Пусть MSSQL сделает всю работу.Затем вы можете вставить новые записи (содержащие StudentName и все остальное, что вы хотите), и для вас будет сгенерирован идентификатор:

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)
);
...