Вставка данных в SQL Server с помощью C#

У меня проблема с вставкой данных в SQL Server.

Я пытаюсь добавить данные с помощью С# в свою базу данных SQL Server с помощью этого кода:

private void button1_Click(object sender, EventArgs e)
{
    con = new SqlConnection("Data Source=DEMO;Initial Catalog=Shipping;Integrated Security=True");
    con.Open();

    cmd = new SqlCommand(
@"INSERT INTO SailorForm 
(  firstName,
   lastName,
   nationallity,
   age,
   gender,
   address,
   deckRank,
   engineRank,
   electricalRank,
   contractdate,
   contractType,
   shipname,
   durationoftour,
   country/port,
   healthissues,
   durationoftour2,
   shiptype,
   Certificateslicenses,
   WorkExperience,
   idnumber
) 
VALUES 
(  @firstName,
   @lastName,
   @nationallity,
   @age,
   @gender,
   @address,
   @deckRank,
   @engineRank,
   @electricalRank,
   @contractdate,
   @contractType,
   @shipname,
   @durationoftour,
   @country/port,
   @healthissues,
   @durationoftour2,
   @shiptype,
   @Certificateslicenses,
   @WorkExperience,
   @idnumber )", con); 

    cmd.Parameters.Add("@firstname", textBox1.Text);
    cmd.Parameters.Add("@lastname", textBox2.Text);
    cmd.Parameters.Add("@nationallity", textBox3.Text);
    cmd.Parameters.AddWithValue("@age", textBox5.Text);
    cmd.Parameters.Add("@gender", radioButton1.Text);
    cmd.Parameters.Add("@address", textBox4.Text);
    cmd.Parameters.Add("@deckrank", comboBox1.SelectedItem.ToString());
    cmd.Parameters.Add("@enginerank", comboBox2.SelectedItem.ToString());
    cmd.Parameters.Add("@electricalRank", comboBox3.SelectedItem.ToString());
    cmd.Parameters.Add("@contractdate", dateTimePicker1.MaxDate);
    cmd.Parameters.Add("@contractType", radioButton3.Text);
    cmd.Parameters.Add("@shipname", textBox6.Text);
    cmd.Parameters.Add("@durationoftour", dateTimePicker2.MaxDate);
    cmd.Parameters.Add("@country/port", textBox11.Text);
    cmd.Parameters.Add("@healthissues", textBox13);
    cmd.Parameters.Add("@durationoftour2", dateTimePicker3.MaxDate);
    cmd.Parameters.Add("@shiptype", comboBox4.SelectedItem.ToString());
    cmd.Parameters.Add("@Certificateslicenses", textBox14.Text);
    cmd.Parameters.Add("@WorkExperience", textBox15);
    cmd.Parameters.Add("@idnumber", textBox7.Text);

    cmd.ExecuteNonQuery();
}

Ваш параметр для страны/порта, вероятно, убивает его... У вас не может быть столбца/параметра со специальным символом. Если вы это сделали, это просто головная боль, идущая по линии. Измените параметр на что-то вроде @CountryPort (то же самое для имени столбца, если оно недействительно)

DRapp 05.05.2019 20:28

Спасибо за чтение всего кода, я изменю его и попробую вставить их снова.

Takis Pagonis 05.05.2019 20:30

в чем именно проблема?: Есть ли выброшенное исключение?

Eriawan Kusumawardhono 05.05.2019 20:31

См. метод Добавлять

Alexander Petrov 05.05.2019 20:34

Кстати, я уверен, что через год все значения [возраст] будут неверными. Кроме того, этот конкретный параметр должен быть cmd.Parameters.Add("@age", Int32.Parse(textBox5.Text));, если вы уже проверили, что textBox5.Text можно анализировать как целое число.

Andrew Morton 05.05.2019 20:38

Я изменил параметр countryport и теперь в Visual Studio выдает исключение Unhandled. Ссылка на объект не устанавливает экземпляр объекта, система Windows.Forms.Combobox.SelectedItem.get вернула значение null.

Takis Pagonis 05.05.2019 20:39

Хорошо, я изменил значение возраста.

Takis Pagonis 05.05.2019 20:40

Пожалуйста, узнайте, как нормализовать данные, прежде чем продолжить, потому что ваши столбцы скоро перестанут синхронизироваться.

Dour High Arch 05.05.2019 21:08

@TakisPagonis, публикуя вопрос, пожалуйста, более подробно опишите, что вы испытываете. Задайте вопрос таким образом, чтобы можно было понять, в чем ваша проблема.

eikooc 05.05.2019 21:10

Хорошо, ребята, простите меня, если я запутал вас, я новичок, и это мой первый вопрос.

Takis Pagonis 05.05.2019 21:19
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
10
136
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Добро пожаловать в S/O, не позволяйте другим заставлять вас чувствовать себя плохо. нам всем приходилось учиться в тот или иной момент, и у всех были не очень важные вопросы. Вы сделали хорошую первую попытку. Вы предоставили свой пример кода для подключения, команды вставки и параметризации. Все это было хорошо.

Теперь вы узнаете больше о проверке данных, чтобы убедиться, что вы не добавляете в свои таблицы неожиданный мусор.

Пара предложений. При разработке форм назначайте элементам управления лучшие имена, чем textBox1, textBox2 и т. д., checkBox1 и т. д. Я уверен, что это пример для изучения, но затем просмотр кода гарантирует, что у вас есть правильный код.

С полями с датой/временем убедитесь, что вы сохраняете их как этот тип данных, не пытайтесь изменить какое-либо строковое значение, так как фильтрация даты будет более болезненной.

Еще одно предложение: старайтесь не создавать таблицы или имена столбцов с тем, что МОЖЕТ быть зарезервированными словами. Может быть запутанным позже в разработке. Если у вас есть столбец Date. Вы имеете в виду дату (как в некоторых функциях языка SQL)? или TransactionDate — более явно. Вскоре вы выучите общие команды. Просто пища для размышлений, пока вы учитесь.

Большое спасибо за все советы.

Takis Pagonis 05.05.2019 23:32

Другие вопросы по теме