developerit Ответов: 2

как хранить данные в поле базы данных mysql с помощью datetime asp.net с c#


Привет, я использую asp.net 4.0 с c# с mysql

я передаю это значение для столбца даты 1/23/2013 8:46: 08 утра столбец datetime выдает ошибку

неверная синтаксическая ошибка.
имя таблицы-pack


CUSTOMER_PHONE VARCHAR(20)
IN_DATE datetime
СОСТОЯНИЕ TINYINT
PACK_CODE VARCHAR(50)
FK_SIZE TINYINT
PAY_CODE VARCHAR(50)
OPEN_CODE VARCHAR(50)
SEND_CODE VARCHAR(50)


MySqlConnection con = new MySqlConnection(constring);
MySqlCommand cmd = new MySqlCommand("insert into pack(CUSTOMER_PHONE ,IN_DATE,STATE ,PACK_CODE ,FK_SIZE ,PAY_CODE ,OPEN_CODE,SEND_CODE)values('" + Convert.ToString(txtPhoneNo.Text) + "'," + Convert.ToDateTime(txtInDate.Text) + "," + Convert.ToInt16(0) + ",'" + Convert.ToString(txtPackCode.Text) + "'," + Convert.ToInt16(ddlSize.SelectedItem.Vlue) + ",'" + Convert.ToString(0) + "','" + Convert.ToString(txtopencode.Text) + "'")", con);

        if (cmd.ExecuteNonQuery() != 0)
        {
            con.Close();

            Label1.Text = "Stored Successfully..";
        }
        else { Label1.Text = "Error";
        }




пожалуйста, дайте мне идею, чтобы решить эту проблему.

2 Ответов

Рейтинг:
2

Nalawade vikas

MySQL:
В MySQL вам нужно передать DateTime в формате 24 часа.
например:если вы хотите обновить/вставить "1/23/2013 8:46: 08 AM".
вам нужно пройти как "2013-01-23 08:46: 08".


Рейтинг:
16

OriginalGriff

Не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.

Они также помогут решить вашу проблему: передайте значение DateTime в качестве параметра, и MySql примет его непосредственно - как вы это делаете, Преобразуя текстовую строку в DateTime, затем преобразуя ее обратно в строку, а затем передавая ее MySql, который не очень любит ее, потому что она содержит пробел.

MySqlCommand cmd = new MySqlCommand("insert into pack(CUSTOMER_PHONE ,IN_DATE,STATE ,PACK_CODE ,FK_SIZE ,PAY_CODE ,OPEN_CODE,SEND_CODE)values(@CPN, @IND, @STA, @PKC, @FKS, @PAY, @OPC, @SNC)", con);
cmd.Parameters.AddWithValue("@CPN", txtPhoneNo.Text);
cmd.Parameters.AddWithValue("@IND", Convert.ToDateTime(txtInDate.Text));
cmd.Parameters.AddWithValue("@STA", 0);
cmd.Parameters.AddWithValue("@PKC", txtPackCode.Text);
cmd.Parameters.AddWithValue("@FKS", Convert.ToInt16(ddlSize.SelectedItem.Vlue));
cmd.Parameters.AddWithValue("@PAY", 0);
cmd.Parameters.AddWithValue("@OPC", txtopencode.Text);
Я также подозреваю, что "Vlue" должно быть "Value", но это зависит от вас...


developerit

большое спасибо команде CodeProject, наконец-то она мне помогла......

OriginalGriff

Пожалуйста!