2012-05-23 8 views
0

У меня есть поле DateTime в моей базе данных SQL, на которое я хочу написать время, но как это сделать?Вставить DateTime в базу данных

Я хочу сделать это как временную метку, поэтому, когда пользователь нажимает кнопку «добавить», он добавляет данные в другие поля и временную метку в поле DateTime, но я продолжаю получать следующую ошибку:

Конверсия не удалась при преобразовании даты и/или времени из символьной строки.

Это мой текущий код в CS файл

insertSQL = "INSERT INTO Posts (TopicID, PostBody, PostDate, UserID)" 
     + "VALUES ('" + topic + "', '" + newPostText + "', '" + DateTime.Now.ToString() + "', '" + User_ID + "')"; 

Пожалуйста, обратите внимание, что я хотел показать, как много информации времени, как я могу. Например, 23/05/2012 10:58:00 a.m.

+0

В SQL Server, установите "Значение по умолчанию или связывание" с (GETDATE()) для smalldatetime – dpDesignz

ответ

4

Ваша реализация склонна к SQL Injection. Для того, чтобы решить, что и ваша проблема DateTime, используйте параметры - http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters.aspx

Что-то вроде этого:

string commandText = "INSERT INTO Posts (TopicID, PostBody, PostDate, UserID)" 
    + "VALUES (@Topic, @NewPostText, @PostDate, @UserID)"; 

using (SqlConnection connection = new SqlConnection(connectionString)) 
{ 
    SqlCommand command = new SqlCommand(commandText, connection); 
    command.Parameters.AddWithValue("@Topic", "My Topic"); 
    command.Parameters.AddWithValue("@NewPostText", "Post text goes here"); 
    command.Parameters.AddWithValue("@PostDate", dateObject); 
    command.Parameters.AddWithValue("@UserID", "UserA"); 

    try 
    { 
     connection.Open(); 
     Int32 rowsAffected = command.ExecuteNonQuery(); 
    } 
    catch (Exception) 
    { 
     // Handle Errors  
    } 
} 
+0

Спасибо. Я знаю, что сейчас это подвержено, но это не отвечало на мой вопрос. – dpDesignz

+0

Использование параметров _is_ ответ на вашу проблему. Параметры могут сохранять типы данных, поэтому вместо того, чтобы вводить DateTime в SQL как строку и заставляя SQL пытаться преобразовать его обратно в DateTime, механизм SQL получит объект DateTime. – Snixtor

+0

+1 для перехода от плохой ссылки ответ на реальный ответ со ссылкой как ссылкой – peroija

-2

Вы запрашиваете strtotime()?

<?php 
$d = date('y-m-d'); 
echo date('d M Y',strtotime($d)); 
echo "<br>"; 
echo date('Y-m-d H:i:s'); ?> 

вздохнув, моя вина, это для Php ~

+0

:). Спасибо за то, что вы дали хотя бы – dpDesignz

+0

Извините, я не знаком с asp.net^_^Удачи. – zhenjie

+0

-1: Добро пожаловать в StackOverflow! К сожалению, вы не ответили на вопрос. Отвечая на вопрос о проблеме asp.net, решение, скорее всего, будет включать asp.net, а не php. И, отвечая на вопрос о введении значения в базу данных, правильный ответ, скорее всего, продемонстрирует добавление значения в базу данных, а не только его форматирование. Посмотрите на ответ @ Snixtor, чтобы узнать, как вы можете улучшить свое решение. –

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