phil.o
using (SqlCommand cmd = new SqlCommand(connection))
{
cmd.CommandText = "INSERT INTO stock_sales_system.customer (name, address, city, telephone, datefield, description, unknownfield1, unknonwnfield2) VALUES (@name, @address, @city, @telephone, @date, @description, @field1, @field2)";
cmd.Parameters.Add("@name", SqlDbType.NVarChar).Value = txtCustomerName.Text;
cmd.Parameters.Add("@address", SqlDbType.NVarChar).Value = txtAddress.Text;
cmd.Parameters.Add("@city", SqlDbType.NVarChar).Value = cbxCity.Text;
cmd.Parameters.Add("@telephone", SqlDbType.NVarChar).Value = txtTelephone.Text;
cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = dtpDate.Value;
cmd.Parameters.Add("@description", SqlDbType.NVarChar).Value = txtDescription.Text;
cmd.Parameters.Add("@field1", SqlDbType.Int).Value = 0;
cmd.Parameters.Add("@field2", SqlDbType.Int).Value = 0;
int result = cmd.ExecuteNonQuery();
}
Здесь вам придется указать правильные имена столбцов, так как я должен был угадать их, так как вы их не показывали.
Вредные привычки, которые вы должны потерять как можно скорее:
- построение SQL-запросов путем объединения строк, полученных из входных данных use; это нецелесообразно, так как это оставляет ваш код широко открытым для атак SQL-инъекций.
- не указывая имена столбцов в ваших SQL-запросах.
- относиться ко всему как к струнам. Это то, что вы делаете, когда заключаете каждое значение между одинарными кавычками. Пожалуйста, всегда используйте правильные типы и обязательно следуйте правильному синтаксису для каждого из них. Использование параметров запроса в любом случае освобождает вас от необходимости помещать в запрос любую цитату.