Как вставить дату с C # и MySQL в обратном формате?

Моя база данных спроектирована таким образом, что вставка дат имеет формат годы / месяцы / дни, и на момент отправки содержимого этого элемента управления через c # в базу данных я не знаю подходящего предложения для преобразовать его и отправить в том же формате. Я собираю эти данные через DataTimePicker

string agregar = "insert into values('" + txtIDUsuario.Text + "'," + "md5('" + TxtContraseña.Text + "'), 'md5',' " + Convert.ToInt16(txtTiposUsuario) + "','" + txtNombresUsuarios.Text + "','" + txtApellidosUsuario.Text + "';'" + Convert.ToDateTime(dataTFNacimiento.Value) + "','" + Convert.ToInt16(txtNumeroUsuario) + "','" + txtCorreoUsuario.Text + "','" + rtxtRedSocialUsuario.Text + "','" + rtxtDireccionUsuario.Text + "');";

Там есть полная строка кода.

0
задан 06.11.2016, 03:59
2 ответа

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

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

Другой разум, дело в том, что он вынуждает тебя манипулировать стоимостью как strings, даже если он не имеет смысл делания этого. И это случай здесь. Твоя стоимость - дата, а следовательно он не имеет смысл, что ты был должен беспокоиться форматирования этого правильно, чтобы вводить в поле дату в твоей базе данных (я понимаю, что поле в твоей базе данных - типа date. Если не, у тебя возможно была другая проблема там также).

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

Поскольку ты не описал твою таблицу, позволь мне давать тебе упрощенный пример.

Понимая, что у тебя есть определенный table таким образом:

create table tbl (
    dt date
);

insert в этой таблице с C# используя следующую дату одного DataTimePicker он был бы похож на следующее:

string insertText = "insert into tbl (dt) values (@dt)";
using (var cmd = new MySqlCommand(insertText, conn))
{
    cmd.Parameters.AddWithValue("@dt", dateTimePicker1.Value);
    cmd.ExecuteNonQuery();
}

Поскольку ты можешь видеть, из-за того, что я использую параметр, я могу проводить дату прямо dateTimePicker1.Value не будучи должен беспокоиться форматирования string.

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

Полезная ссылка: Working with Parameters.

2
ответ дан 24.11.2019, 12:43
  • 1
    Большое спасибо, уже я это применяю туз и # 237;. –  Gabriel Hernández 06.11.2016, 10:07

Ты ты можешь форматировать желаемый посредством toString, enviarГ-схвати эту стоимость в консультацию прямо.

string fecha = dataTFNacimiento.Value.ToString("yyyyMMdd");
1
ответ дан 24.11.2019, 12:43
  • 1
    Схвати и # 237; я читал, спасибо, Есть много функций бесполезных устройств, с которыми revertir формат или " personalizar" собственный один. Например, я занимал funcioines Subtring и Split. –  Gabriel Hernández 06.11.2016, 10:08