У меня есть программа, которая вставляет список полей в базу данных. Когда я использую свой собственный компьютер для вставки поля datetime, он выглядит отлично. Однако, когда я вставить его с помощью Windows 7 китайского издания, поле станет 0000-00-00 00:00:00 это командаC# mysqlcommnand вставить в базу данных mysql
MySqlCommand myCommand4 = new MySqlCommand("Insert into OrderRecords_table values('" + OrderIDLabel.Text + "','" + customerCode + "','" + customer + "','" + TelComboBox.Text + "','" + LicenseComboBox.Text + "','" +
DriverComboBox.Text + "','" + AddressComboBox.Text + "','" + LocationTypeComboBox.Text + "','" + PickupComboBox.Text + "','" + CustomerTypeLabel.Text + "','" +
Convert.ToDecimal(TotalPriceLabel.Text) + "','" + status + "','" + note + "','" + sandReceiptNo + "','" + createtiming + "','" + Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")) + "')", myConnection);
myCommand4.ExecuteNonQuery();
я знаю, это выглядит немного неаккуратно, но та часть, где он говорит, что STR_TO_DATE('" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "','%Y/%M/%d /%H/%m/%s'))"
- это та часть, где я вставляю текущее время и дату. он отлично работает, когда я использую английскую версию окон, но всякий раз, когда я использую китайское издание, это isnert 0000-00-00 00:00:00 вместо фактического времени, я попытался изменить формат отображения дат в панели управления , но он все еще имеет ту же проблему.
Кто-нибудь знает, в чем проблема?
Благодаря
отредактировал мой код
var sql = "insert into OrderRecords_table values(@OrderID, @customercode, @customer, @PhoneNumber, @license, @driver, @address, @type, @pickupLocation, @PaymentMethod, @totalPrice, @status, @notes, @sandreceiptNo,@createTime, @EditTime)";
using (var myCommand4 = new MySqlCommand(sql, myConnection))
{
myCommand4.Parameters.AddWithValue("@orderId", MySqlDbType.VarChar).Value = OrderIDLabel.Text;
myCommand4.Parameters.AddWithValue("@customercode", MySqlDbType.VarChar).Value = customerCode;
myCommand4.Parameters.AddWithValue("@customer",MySqlDbType.VarChar).Value = customer;
myCommand4.Parameters.AddWithValue("@PhoneNumber", MySqlDbType.VarChar).Value =TelComboBox.Text;
myCommand4.Parameters.AddWithValue("@license", MySqlDbType.VarChar).Value = LicenseComboBox.Text;
myCommand4.Parameters.AddWithValue("@driver", MySqlDbType.VarChar).Value = DriverComboBox.Text;
myCommand4.Parameters.AddWithValue("@address", MySqlDbType.VarChar).Value = AddressComboBox.Text;
myCommand4.Parameters.AddWithValue("@Type", MySqlDbType.VarChar).Value = LocationTypeComboBox.Text;
myCommand4.Parameters.AddWithValue("@pickupLocation", MySqlDbType.VarChar).Value = PickupComboBox.Text;
myCommand4.Parameters.AddWithValue("@PaymentMethod", MySqlDbType.VarChar).Value = CustomerTypeLabel.Text;
myCommand4.Parameters.AddWithValue("@totalPrice", MySqlDbType.Decimal).Value = Convert.ToDecimal(TotalPriceLabel.Text);
myCommand4.Parameters.AddWithValue("@status", MySqlDbType.VarChar).Value = status;
myCommand4.Parameters.AddWithValue("@notes", MySqlDbType.VarChar).Value =status;
myCommand4.Parameters.AddWithValue("@sandreceiptNo", MySqlDbType.VarChar).Value = sandReceiptNo;
myCommand4.Parameters.AddWithValue("@createTiming", MySqlDbType.DateTime).Value = createtiming;
myCommand4.Parameters.AddWithValue("@EditTime", MySqlDbType.DateTime).Value = DateTime.Now;
myCommand4.ExecuteNonQuery();
его о том, что у меня есть некоторый недопустимый ввод, но я проверил несколько раз, что все поля asigned правильного типа ... не знаю, что происходит
Он не только выглядит грязным, он также открыт для SQL-инъекции. Используйте sql-параметры. Это также устраняет эту проблему локализации в качестве боковой линии. –
Измените ваше заявление на использование @Parameters, тогда у вас не будет проблем с разными настройками культуры, и в качестве второго преимущества: у вас не будет проблем с пользователем. Ввод, содержащий «.. SQL injection ... –
Пожалуйста, не связывайте строки для генерации операторов SQL! Использование параметризованного запроса проще, быстрее и безопаснее. Вы также * не * должны заниматься конверсиями или культурами - просто передавать даты как параметры даты, десятичные числа как десятичные параметры. –