У меня проблема с вставкой данных в 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();
}
Спасибо за чтение всего кода, я изменю его и попробую вставить их снова.
в чем именно проблема?: Есть ли выброшенное исключение?
См. метод Добавлять
Кстати, я уверен, что через год все значения [возраст] будут неверными. Кроме того, этот конкретный параметр должен быть cmd.Parameters.Add("@age", Int32.Parse(textBox5.Text));, если вы уже проверили, что textBox5.Text можно анализировать как целое число.
Я изменил параметр countryport и теперь в Visual Studio выдает исключение Unhandled. Ссылка на объект не устанавливает экземпляр объекта, система Windows.Forms.Combobox.SelectedItem.get вернула значение null.
Хорошо, я изменил значение возраста.
Пожалуйста, узнайте, как нормализовать данные, прежде чем продолжить, потому что ваши столбцы скоро перестанут синхронизироваться.
@TakisPagonis, публикуя вопрос, пожалуйста, более подробно опишите, что вы испытываете. Задайте вопрос таким образом, чтобы можно было понять, в чем ваша проблема.
Хорошо, ребята, простите меня, если я запутал вас, я новичок, и это мой первый вопрос.





Добро пожаловать в S/O, не позволяйте другим заставлять вас чувствовать себя плохо. нам всем приходилось учиться в тот или иной момент, и у всех были не очень важные вопросы. Вы сделали хорошую первую попытку. Вы предоставили свой пример кода для подключения, команды вставки и параметризации. Все это было хорошо.
Теперь вы узнаете больше о проверке данных, чтобы убедиться, что вы не добавляете в свои таблицы неожиданный мусор.
Пара предложений. При разработке форм назначайте элементам управления лучшие имена, чем textBox1, textBox2 и т. д., checkBox1 и т. д. Я уверен, что это пример для изучения, но затем просмотр кода гарантирует, что у вас есть правильный код.
С полями с датой/временем убедитесь, что вы сохраняете их как этот тип данных, не пытайтесь изменить какое-либо строковое значение, так как фильтрация даты будет более болезненной.
Еще одно предложение: старайтесь не создавать таблицы или имена столбцов с тем, что МОЖЕТ быть зарезервированными словами. Может быть запутанным позже в разработке. Если у вас есть столбец Date. Вы имеете в виду дату (как в некоторых функциях языка SQL)? или TransactionDate — более явно. Вскоре вы выучите общие команды. Просто пища для размышлений, пока вы учитесь.
Большое спасибо за все советы.
Ваш параметр для страны/порта, вероятно, убивает его... У вас не может быть столбца/параметра со специальным символом. Если вы это сделали, это просто головная боль, идущая по линии. Измените параметр на что-то вроде @CountryPort (то же самое для имени столбца, если оно недействительно)