private void button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=SAGAR\\SQLEXPRESS;Initial Catalog=ClinicDb;Integrated Security=True");
con.Open();
SqlCommand sc = new SqlCommand("insert into Patient_Details (Patient Id,Name,Age,Contact No,Address) VALUES('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "',);", con);
object o= sc.ExecuteNonQuery();
MessageBox.Show(o +"Saved data");
con .Close();
}
ответ
поля и имена таблиц с пробелами должны быть внутри []
, также у вас есть 1 дополнительная запятая в конце вашего запроса. Попробуйте:
SqlCommand sc = new SqlCommand("insert into [Patient_Details] ([Patient Id],Name,Age,[Contact No],Address) VALUES('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "');", con);
object o= sc.ExecuteNonQuery();
также рассмотрите возможность использования параметров, так как вы открыты для ввода в sql.
Я вижу несколько вещей;
Patient Id
должен быть[Patient Id]
иContact No
должны быть[Contact No]
, так как они более чем одно слово. Как наилучшая практика, измените свои имена на одно слово.- У вас есть дополнительные
,
в концеtextBox5.Text + "',
часть.
Но гораздо более важно, вы должны всегда использование parameterized queries. Этот тип конкатенаций строк открыт для атак SQL Injection.
И используйте using
statement для автоматического управления вашими соединениями и командами вместо вызова методов Close
или Dispose
вручную.
using(var con = new SqlConnection(connection))
using(var sc = con.CreateCommand())
{
sc.CommandText = @"insert into Patient_Details ([Patient Id],Name,Age,[Contact No],Address)
VALUES(@id, @name, @age, @no, @address)";
sc.Parameters.AddWithValue("@id", textBox1.Text);
sc.Parameters.AddWithValue("@name", textBox2.Text);
sc.Parameters.AddWithValue("@age", textBox3.Text);
sc.Parameters.AddWithValue("@no", textBox4.Text);
sc.Parameters.AddWithValue("@address", textBox5.Text);
con.Open();
int i = sc.ExecuteNonQuery();
MessageBox.Show(i + " Saved data");
}
Кстати, я использовал AddWithValue
в моем примере, так как вы не сказали нам свои типы столбцов, но вы не. This method might generate surprising results sometimes. Используйте Add
метод перегрузки, чтобы указать свой тип параметра (SqlDbType
) и его размер.
Получение object
от ExecuteNonQuery
is действительно странно также. Он будет возвращать int
в качестве количества проведенных строк. Это будет 1
или 0
в вашем случае.
В последнюю очередь, я сильно предполагаете Patient Id
, Age
и Contact No
столбцы должны быть какой-то числовой тип, не введенный символ.
спасибо, что у него есть работа, и да, я буду использовать параметризованные запросы, спасибо –
Пожалуйста, [не рекомендуется] (http://blogs.msmvps.com/jcoehoorn/blog/ 2014/05/12/can-we-stop-using-addwithvalue-уже /) использовать 'AddWithValue' – DavidG
@DavidG Я объяснил, почему я использовал его на последней части. –
- 1. в этом int o = sc.executenonquery(); задает ошибку «неправильный синтаксис рядом с« system.data.sqlclient.sqlexception », что делать?
- 2. Код дает мне ошибку сегментации
- 3. GoogleApiClient.Builder.enableAutoManage() дает мне ошибку
- 4. dev_appserver.py дает мне ошибку
- 5. res.should.have.status дает мне ошибку
- 6. включают() дает мне ошибку
- 7. Почему этот html-код дает мне ошибку?
- 8. Почему этот код дает мне ошибку?
- 9. SSL - Что мне делать?
- 10. Почему мой код дает мне ошибку SQL
- 11. Почему следующий код sass дает мне ошибку?
- 12. FactoryGirl дает мне ошибку
- 13. Почему этот код дает мне ошибку сегментации?
- 14. Thread.join() дает мне ошибку?
- 15. Qmake дает мне ошибку
- 16. setOnTouchListener() дает мне ошибку
- 17. Что мне делать, чтобы исправить мой код?
- 18. Что мне делать дальше?
- 19. Почему валидатор HTML дает мне ошибку об этом комментарии HTML?
- 20. установка AdMob баннер дает мне странную ошибку компоновщика Mach-O
- 21. Код дает мне аргументExeption?
- 22. XMLOutputFactory.newInstance() дает мне ошибку NoClassDefFound
- 23. Почему это для цикла дает мне ошибку?
- 24. Django дает мне ошибку 404
- 25. Android Theme.Dialog дает мне ошибку
- 26. функция store.each дает мне ошибку
- 27. Почему isroid.R.menu_search дает мне ошибку?
- 28. strcpy дает мне ошибку сегментации
- 29. AFNetworking дает мне несанкционированную ошибку
- 30. Почему Lib.current.stage дает мне ошибку?
Какова деталь исключения? Вы всегда должны использовать [параметризованные запросы] (http://blog.codinghorror.com/give-me-parameterized-sql-or-give-me-death/). Этот тип конкатенаций строк открыт для [SQL Injection] (http://en.wikipedia.org/wiki/SQL_injection) атак. –
В названиях столбцов есть пробелы, что означает, что вам нужно заключить их в фигурные скобки, например. '[имя столбца]' – DavidG
спасибо, что у него есть работа, и да, я буду использовать параметризованные запросы. спасибо –