Я пытаюсь найти список строк идентификаторов в моей базе данных, где строка идентификаторов совпадает со строкой объекта, который я пытаюсь создать.Идентификатор, который создается, находится в шаблоне проектирования завода, где тип поезда "экспресс" сделан с идентификатором "1E45".После создания этого идентификатора он увеличивает числовой раздел после буквы, после чего его можно использовать для добавления следующего поезда.
При поиске в списке с помощью foreach он возвращает идентификатор из базы данных, аналогичнойтому, кто пытается быть сотворенным.
Но когда я пытаюсь сопоставить эти два после использования toString, чтобы изменить их оба и сопоставить в IF.Совпадение возвращает false, хотя, когда я проверяю отладку, оно точно такое же?
Затем он просто продолжает пытаться добавить новый объект с тем идентификатором, который уже существует и дает сбой.
Что я делаю не так?это не имеет смысла после проверки сопоставляемых значений и сообщения false.
Вот код, который я настроил:
//Create sql command variables to create new commands
SqlCommand insert = new SqlCommand();
SqlCommand checkID = new SqlCommand();
//Set the command type to text
insert.CommandType = CommandType.Text;
checkID.CommandType = CommandType.Text;
//Searches for an ID in the database that matches one that is trying to be created
checkID.CommandText = "SELECT id FROM Train WHERE id = @trainID";
//Parameters for checking ID in database
checkID.Parameters.AddWithValue("@trainID", train.TrainID);
//Set the connection for the command for the checkID sql connection
checkID.Connection = con;
//Start the connection
con.Open();
DataTable dt = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter(checkID);
adapter.Fill(dt);
dt.Load(checkID.ExecuteReader());
//Item last = Module.
foreach (DataRow i in dt.Rows)
{
if (i.ToString() == train.TrainID.ToString())
{
MessageBox.Show("This ID already exists! " + train.TrainID);
return;
}
}
//Close the connection
con.Close();
//Set the text for the command to insert data to the database connected to
insert.CommandText = "INSERT Train (id, departure, destination, type, intermediate, departure_time, departure_date, sleeperBerth, firstClass) " +
"VALUES ( @trainID , @departure, @destination, @type, @intermediate, @dep_time, @dep_date, @sleep, @first)";
//Parameters for adding values from the train object to the database
insert.Parameters.AddWithValue("@trainID", train.TrainID);
insert.Parameters.AddWithValue("@departure", train.Departure);
insert.Parameters.AddWithValue("@destination", train.Destination);
insert.Parameters.AddWithValue("@type", train.Type);
insert.Parameters.AddWithValue("@intermediate", intStops);
insert.Parameters.AddWithValue("@dep_time", train.DepartureTime);
insert.Parameters.AddWithValue("@dep_date", train.DepartureDay);
insert.Parameters.AddWithValue("@sleep", train.SleeperBerth);
insert.Parameters.AddWithValue("@first", train.FirstClass);
//Set the connection for the command for the insert sql connection
insert.Connection = con;
//Start the connection
con.Open();
//Execute the command specified
insert.ExecuteNonQuery();
//Close the connection
con.Close();