2012-01-18 5 views
0

Я пытаюсь вставить значение из значения datetimepicker в таблицу SQL Server.Вставка значения datetimepicker в SQL Server 2008

Моя таблица выглядит следующим образом

Profile (Id, Name,..., DateofBirth(date)...) 

Я попытался это, чтобы преобразовать значение даты и времени сборщика в

string dt = dateTimePicker.Value.ToString("yyyy-mm-dd hh:MM:ss"); 

Insert into profile (id, DateofBirth) 
values(id, CONVERT(datetime, CONVERT(varchar(11), dt, 101)); 

также использовать этот

var date = new DateTime(dateTimePickerText); 

также использовать этот

DateTime date = DateBox.Value.Date; 
string sDate = date.ToString("dd-MM-yy", System.Globalization.CultureInfo.InvariantCulture); 
DateTime dateInsert = Convert.ToDateTime(sDate); 

, но не может вставить дату в базу данных. 2. Как я могу вернуть дату из базы данных?

+0

1) Какое сообщение об ошибке? 2) выполнить SELECT SELECT. Вероятно, это не тот ответ, который вы ищете, но я не могу представить, что вы ищете. Можете ли вы более конкретно узнать о своей проблеме «как я могу получить»? Используете ли вы объект SQLCommand, Linq или набор данных? Подробности, пожалуйста. –

+0

Дата сохраняется в базе данных с помощью cmd.Parameters.Add ("@ DateofBirth", SqlDbType.DateTime) .Value = dateTimePicker, но теперь я хочу вернуть его назад и долить его if (dateStored = datetime.now()), как можно я делаю это? – buddy

ответ

10

Возможно, вам необходимо использовать SqlParameter.

sql="Insert into profile (id, DateofBirth) values (@id,@DateofBirth)"; 
    using(SqlCommand cmd=new SqlCommand(sql,conn)) 
    { 
     cmd.Parameters.Add("@id",SqlDbType.Int).Value=10; 
     cmd.Parameters.Add("@DateofBirth",SqlDbType.DateTime).Value=dateTimePicker.Value; 

     conn.Open(); 
     cmd.ExecuteNonQuery(); 
     conn.Close(); 
    } 
+0

Его работа прекрасна, но при вставке этой команды ** cmd.Parameters.Add ("@_ name", SqlDbType.VarChar) .Value = NameBox.Text; ** он запрашивает недопустимый объект ... как вставить его – buddy

+0

Укажите size: cmd.Parameters.Add ("@_ name", SqlDbType.VarChar, 40) .Value = NameBox.Text; – adatapost

+0

Теперь я получил еще одну ошибку ** cmd.Parameters.Add ("@ AccountId", SqlDbType.Int) .Value = AccountInformation.AccountId; ** где AccountInformation.AcountId содержит целочисленное значение. но ошибка: ** Ошибка конверсии при преобразовании значения varchar '@AccountId' в тип данных int. ** – buddy

2

Лично я привык использовать параметры для всех ваших SQL-запросов. Таким образом, вы избегаете вектора атаки SQL-инъекций, и вы также можете указать тип параметра как дату и время. См. Например, this answer.

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