2011-09-08 4 views
-1

Я попробовал несколько типов формата даты, но все же я не могу понять это правильно.Ошибка при сохранении значения даты в базе данных MySQL

Ниже приведены кодирования, который был прописан

Dim serverDate As String = Format(Now(), "DD-MM-YYYY") 
strNew &= "INSERT INTO Staff (" 
      strNew &= "full_name" 
      strNew &= ", login_id" 
      strNew &= ", passwd" 
      strNew &= ", last_update" 
      strNew &= ") VALUES (" 
      strNew &= "'" & txt_Name.Text & "'" 
      strNew &= ", '" & txt_Login.Text & "'" 
      strNew &= ", '" & txt_Password.Text & "'" 
      strNew &= ", (STR_TO_DATE('" & serverDate & "', '%d-%m-%Y'))" 
      strNew &= ")" 

Любая идея, что если бы я пропустил .. Помогает очень ценятся ..

Edit # 1: Забыл добавить в ошибке сообщение
«Неверное значение даты и времени:„DD-09-YYYY“для функции str_to_date»

+0

Почему мой вопрос был отвергнут? .. TT_____TT Я действительно из идеи, как решить этот вопрос, то только я разместить его здесь .. – BlurrieBlue

+0

Здравствуйте, SQL Injection атаки –

ответ

0

вы используете жестко строку SQL, так что вы должны использовать у yyy-MM-dd.

Dim serverDate As String = DateTime.Now.ToString("yyyy-MM-dd") 

strNew &= "INSERT INTO Staff (" 
      strNew &= "full_name" 
      strNew &= ", login_id" 
      strNew &= ", passwd" 
      strNew &= ", last_update" 
      strNew &= ") VALUES (" 
      strNew &= "'" & txt_Name.Text & "'" 
      strNew &= ", '" & txt_Login.Text & "'" 
      strNew &= ", '" & txt_Password.Text & "'" 
      strNew &= ", '" & serverDate & "'" 
      strNew &= ") 

EDIT:

@BlurrieBlue: Забыл добавить в сообщение об ошибке "Неверное значение даты и времени : 'DD-09-YYYY' для функции str_to_date"

Да это неправильный формат. Он должен быть

Format(Now(), "dd-MM-yyyy") 

Посмотрите на этот код-сниппета

cmd=new MySqlCommand() 
cmd.Connection=cn 
cmd.CommandText="INSERT INTO Staff (?full_name,?login_id,?passwd,?last_update)" 
cmd.Parameters.Add("?full_name", MySql.Data.MySqlClient.MySqlDbType.VarChar).Value =txt_Name.Text 
cmd.Parameters.Add("?login_id", MySql.Data.MySqlClient.MySqlDbType.VarChar).Value =txt_Login.Text 
cmd.Parameters.Add("?passwd", MySql.Data.MySqlClient.MySqlDbType.VarChar).Value =txt_Password.Text 
cmd.Parameters.Add("?last_update", MySql.Data.MySqlClient.MySqlDbType.DateTime).Value =DateTime.Now 

cn.Open() 
cmd.ExecuteNonQuery() 
cn.Close() 

Не по теме: Не используйте hard-coded SQL строку. Используйте параметризованную инструкцию sql.

+0

Я пытался использовать хранимую процедуру, чтобы получить serverTime раньше, но у него тоже было проблемы с хранением в базе данных. – BlurrieBlue

+0

Я попробовал решение, но оно все равно дает мне такое же сообщение об ошибке .. Нужно ли мне импортировать любую библиотеку? – BlurrieBlue

+0

@BlurrieBlue: какой из API вы используете (.net-соединение?) – adatapost

Смежные вопросы