VIsual Studio WinForm подключается к базе данных SQL Server: синтаксис C # для передачи данных - PullRequest
2 голосов
/ 04 ноября 2010

Так что я только изучаю .NET, WinForms, SQL Server и C # .... Раньше я использовал VB и MS Access, так что я знаю, что это сильно отличается, но я ищу место для начала.

Обычно я использовал несвязанные формы для ввода данных в MS Access, затем сохранял данные в таблицах на btn_Click или в обработчике событий кнопок с помощью Visual Basic (DAO или SQL).

Поэтому я экспериментировал с VisualСтудия, создающая WinForms с VB.NET & C # и SQL Server.Я узнал, как создать WinForm, а затем с помощью VS создать базу данных внутри и связать форму данных с таблицей базы данных.

Мне не удалось воспроизвести несвязанную форму и сохранить ее во внешней базе данных с помощью кода (btn click) хотя.Допустим, я уже создал базу данных через SSMS и сейчас создаю WinForm для ввода данных.Теперь, нажав btn, я ищу код C #, который перенесет введенные данные из формы в таблицу базы данных.

Итак, для примера, скажем, что форма имеет только одно текстовое поле с именемtxtData, и я хочу перенести его в базу данных с именем DBExample, в таблицу с именем tblExample и в поле с именем fldExample.

Может кто-нибудь помочь мне с этим.Я много смотрел в Интернете об этом, но все, с чем я сталкивался, связано с привязкой данных к элементу управления, и я ищу это с помощью кода.

спасибо, Джастин

1 Ответ

3 голосов
/ 04 ноября 2010

Хорошие общие сведения о доступе к данным .NET см. В

http://www.csharp -station.com / Учебники / AdoDotNet / Lesson01.aspx

или

http://www.startvbdotnet.com/ado/default.aspx


Более конкретный ответ на пример проблемы:

Элементарный синтаксис C #, отфильтровывающий потенциально вредоносные данные для предотвращения SQL-инъекций:

 System.Data.SqlClient.SqlConnection cn = new System.Data.SqlClient.SqlConnection("SomeConnectionString")

System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandText = "Insert Into tblExample (fldExample) Values (@fldExample)"; // Use a parameterized query to avoid SQL Injection
cmd.Connection = cn;

cmd.Parameters.AddWithValue("@fldExample", txtData.Text);  // Set the value of the parameter to the value of the textbox.
// Use a try... catch...finally block to ensure the connection is closed properly
try
{
   cn.Open();
   cmd.ExecuteNonQuery();
   lblStatus.Text = "Item Inserted";
}
catch(Exception ex)
{
   lblStatus.Text = ex.ToString();
}
finally
{
   cn.Close(); // will happen whether the try is successful or errors out, ensuring your connection is closed properly.
}

ПОЖАЛУЙСТА, обратите пристальное внимание на то, как избежать SQL-инъекций.Это очень важно, и это часто упускают новые разработчики, потому что они, как и вы, беспокоятся о базовом синтаксисе и заставляют обновление работать.Вы МОЖЕТЕ построить свой оператор SQL без параметризованных запросов, но лучше сразу же его изучить.

Вот статья о параметризованных запросах.http://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/

И статья из OWASP по SQL-инъекциям, чтобы вы могли понять, почему я говорю, что это важно.(На самом деле, вам следует ознакомиться с сайтом OWASP и ВСЕМИ из первых 10 OWASP, но эта статья относится к вашему вопросу.) http://www.owasp.org/index.php/SQL_Injection

И для получения списка способов построения строк соединения, дляSQL Server И другие БД, моя любимая ссылка http://www.carlprothman.net/Default.aspx?tabid=81

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...