2015-12-29 2 views
0

В моем проекте пользователь может забронировать отпуск, и когда менеджер заходит на учетную запись, менеджер может просмотреть отпуск, забронированный пользователями.Проблема с добавлением вещей в базу данных SQL Server C#

Когда пользователь загружает свой отпуск, информация о празднике поступает в базу данных, которую я создал. В базе данных я установил первичный ключ для номера праздника вместо идентификатора пользователя, так как пользователь может добавить к базе данных 1 или более праздников. Проблема есть, номер праздник всегда равен 0.

Вот моя база данных:

Database Image

Как вы можете видеть в базе данных число праздника 0 и когда пользователь заказывает праздник это не добавит в базу данных, потому что номер праздника равен 0.

Как бы добавить к празднику Цен каждый раз, когда пользователь заказывает отпуск?

например.

50 Richard 27/02/15 29/02/15 Not reviewed 0 
50 Richard 27/02/15 29/02/15 Not reviewed 1 
50 Richard 27/02/15 29/02/15 Not reviewed 2 
50 Richard 27/02/15 29/02/15 Not reviewed 3 

Мой код:

string connectionString = con; 

using (SqlConnection connection = new SqlConnection(connectionString)) 
{ 
    int i = 0; 
    string setAuthorised = "Not reviewed"; 

    SqlCommand cmd = new SqlCommand("INSERT INTO Holidays (Id, Firstname, Datefrom, Dateto, Authorised, HolidayNo) VALUES (@Id, @Firstname, @Datefrom, @Dateto, @Authorised, @HolidayNo)"); 

    cmd.CommandType = CommandType.Text; 
    cmd.Connection = connection; 

    cmd.Parameters.AddWithValue("@Id", idTb.Text); 
    cmd.Parameters.AddWithValue("@Firstname", firstNameTb.Text); 
    cmd.Parameters.AddWithValue("@Datefrom", dateFromTb.Text); 
    cmd.Parameters.AddWithValue("@Dateto", dateToTb.Text); 
    cmd.Parameters.AddWithValue("@Authorised", setAuthorised); 
    cmd.Parameters.AddWithValue("@HolidayNo", i); 
+0

Два варианта, а) сделать праздник номер в auto increment column или b) покажите нам некоторый код, в котором вы создаете данные, должна быть ошибка. – ViRuSTriNiTy

+0

Привет, я добавляю код, где его создание данных, спасибо! –

+0

Вы должны проверить [Может ли мы перестать использовать AddWithValue() уже?] (Http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/) и прекратите использовать '.AddWithValue()' - это может привести к неожиданным и неожиданным результатам ... –

ответ

2

Я предполагаю, что вы находитесь на SQL Server. сделайте столбец id праздника столбец идентичности. например -

CREATE TABLE YourHolidayTable 
(HolidayNumber INT PRIMARY KEY IDENTITY(0,1), 
--other columns 
) 

это было бы самым простым решением .. В своем коде вы всегда вставляя от 0 до holidayNumber. в дб вставка идентичности должна быть установлена ​​на true.just закомментируйте holidaynumber часть в ваших C# код

Используйте этот код после того, как вы измените седловины на

использовании личных
  string connectionString = con; 
     using (SqlConnection connection = new SqlConnection(connectionString)) 
     { 
      int i = 0; 
      string setAuthorised = "Not reviewed"; 
      SqlCommand cmd = new SqlCommand("INSERT INTO Holidays (Id, Firstname, Datefrom, Dateto, Authorised) VALUES (@Id, @Firstname, @Datefrom, @Dateto, @Authorised)"); 
      cmd.CommandType = CommandType.Text; 
      cmd.Connection = connection; 
      cmd.Parameters.AddWithValue("@Id", idTb.Text); 
      cmd.Parameters.AddWithValue("@Firstname", firstNameTb.Text); 
      cmd.Parameters.AddWithValue("@Datefrom", dateFromTb.Text); 
      cmd.Parameters.AddWithValue("@Dateto", dateToTb.Text); 
      cmd.Parameters.AddWithValue("@Authorised", setAuthorised); 
+0

Вы, сэр, гений! Благодаря!! –

+0

Не могли бы вы отметить это как ответ, если это исправит вашу проблему :) Мне нужно это, поскольку я также новичок в stackoverflow, спасибо .. – enthusiast

2

При создании таблицы базы данных, вы хотите, чтобы отметить этот столбец в качестве идентификационной колонки. Быстрый образец ниже

CREATE TABLE dbo.YourTable(
    HolidayNumber INT NOT NULL IDENTITY(1,1), 
    --Other Columns here 
) 

Добавляя IDENTITY(1,1) части он говорит SQL Server, чтобы увеличить на 1, начиная с одной для каждой записи

+0

Привет, спасибо за ваш ответ, не могли бы вы взглянуть на мой код выше, потому что, когда я добавил IDENTITY (1,1) к моему базы данных, ничто не добавляет к базе данных, когда пользователь заказывает праздник больше. Благодаря! –

+0

При использовании значения идентификации вы НЕ вставляете столбец. Так что просто удалите столбец HolidayNo из инструкции insert. –

+0

Спасибо за ответ, пока нет ничего. –