C# mysqlcommn и вставить в базу данных mysql

У меня есть программа, которая вставляет список полей в базу данных. Когда я использую свой собственный компьютер, чтобы вставить поле даты и времени, оно выглядит хорошо. однако, когда я вставляю его, используя китайское издание для Windows 7, поле становится 0000-00-00 00:00:00, это команда

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'))"это часть, где я вставляю текущую дату и время. это работает очень хорошо, когда я использую английскую версию Windows, но всякий раз, когда я использую китайскую версию, вместо фактического времени я пытаюсь изменить формат отображения дат на панели управления., но это все еще имеет ту же проблему.

кто-нибудь знает в чем проблема?

Спасибо

отредактировал мой код

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();

Это говорит о том, что у меня неверный ввод, но я несколько раз проверял, чтобы все поля были назначены правильному типу. не знаю что происходит

2 ответа

Я переписал ваш код для более стандартизированной реализации (с лучшими практиками). Обратите внимание, что я вытащил ваш запрос в отдельную переменную, чтобы код и запрос стали более читабельными.

var sql = "insert into orderrecords_table values " +
          "(@orderId,                            " +
          " @customercode,                       " +
          " @customer,                           " +
          " @telephone,                          " +
          " @license,                            " +
          " @driver,                             " +
          " @address                             " +
          " @locationType,                       " +
          " @pickup,                             " +
          " @customerType,                       " +
          " @totalPrice,                         " +
          " @status,                             " +
          " @note,                               " +
          " @sandreceiptNo,                      " +
          " @createTiming,                       " +
          " @currentTime)                        ";

using (var myCommand4 = new MySqlComm## Heading ##and(sql, connection))
{
   myCommand4.Parameters.AddWithValue("@orderId", OrderIDLabel.Text) ;
   myCommand4.Parameters.AddWithValue("@customercode", customerCode);
   myCommand4.Parameters.AddWithValue("@customer", customer);
   myCommand4.Parameters.AddWithValue("@telephone", TelComboBox.Text);
   myCommand4.Parameters.AddWithValue("@license", LicenseComboBox.Text);
   myCommand4.Parameters.AddWithValue("@driver", DriverComboBox.Text);
   myCommand4.Parameters.AddWithValue("@address", AddressComboBox.Text);
   myCommand4.Parameters.AddWithValue("@locationType", LocationTypeComboBox.Text);
   myCommand4.Parameters.AddWithValue("@pickup", PickupComboBox.Text);
   myCommand4.Parameters.AddWithValue("@customerType", CustomerTypeLabel.Text);
   myCommand4.Parameters.AddWithValue("@totalPrice", Convert.ToDecimal(TotalPriceLabel.Text));
   myCommand4.Parameters.AddWithValue("@status", status);
   myCommand4.Parameters.AddWithValue("@note", status);
   myCommand4.Parameters.AddWithValue("@sandreceiptNo", sandReceiptNo);
   myCommand4.Parameters.AddWithValue("@createTiming", createtiming);
   myCommand4.Parameters.AddWithValue("@currentTime", DateTime.Now);

   myCommand4.ExecuteNonQuery();
}
MySqlCommand Insert = new MySqlCommand("INSERT INTO [TABLE] ([Date], [TEXT]) VALUES(@Date, @Text) ", myConnection);
Insert.CommandTimeout = 60; //if you need
Insert.Parameters.AddWithValue("@Date", DateTime.Now);
Insert.Parameters.AddWithValue("@Text", "Hello word!");
Insert.ExecuteNonQuery();
Insert.Dispose();
Другие вопросы по тегам