2016-07-19 2 views
1

Я пытаюсь вставить новую строку в таблицу в моей базе данных SQL через webform.Заявление SQL для ExecuteNonQuery в C#

Проблема в том, что мне нужно поместить значение DateTime в описание, когда было выполнено задание мастера доставки.

Но так как значение является строкой, а требование, чтобы показать что-то вроде этого "Received parcel by StationMgrSG on 19 July 2016 10:34am", но мои коды отображает что-то вроде этого «Received посылки по StationMgrSG на @TimeNow»

Как изменить значение так, чтобы он отображает дату и время?

Это мой код:

public int updateDeliveryHistory() 
    { 

     string strConn = ConfigurationManager.ConnectionStrings["NPCSConnectionString"].ToString(); 

     SqlConnection conn = new SqlConnection(strConn); 

     SqlCommand cmad = new SqlCommand("INSERT INTO DELIVERYHISTORY(ParcelID, Description) VALUES (@ParcelId,'Received parcel by StationMgrSG on @TimeNow')",conn); 

     cmad.Parameters.AddWithValue("@ParcelId", parcelID); 
     cmad.Parameters.AddWithValue("@TimeNow", DHCreateTime); 

     conn.Open(); 

     cmad.ExecuteNonQuery(); 

     conn.Close(); 

     return 0; 
    } 

ответ

2

Для достижения этой цели необходимо изменить код так:

SqlCommand cmad = new SqlCommand("INSERT INTO DELIVERYHISTORY(ParcelID, Description) VALUES (@ParcelId, @TimeNow)",conn); 
cmad.Parameters.AddWithValue("@ParcelId", parcelID); 
cmad.Parameters.AddWithValue("@TimeNow","Received parcel by StationMgrSG on " + DHCreateTime.ToString()); 

Дополнительное примечание, Вы можете указать DateFormat внутри .ToString() метода, если необходимо. то @TimeNow будет выглядеть следующим образом:

string formatString="dd-MMMM-yyyy HH:mm" 
cmad.Parameters.AddWithValue("@TimeNow","Received parcel by StationMgrSG on " + DHCreateTime.ToString(formatString)); 
+0

Еще лучше, если у вас есть столбец DateTime в БД для этих данных. –

0

Вам просто нужно изменить эту линию

SqlCommand cmad = new SqlCommand("INSERT INTO DELIVERYHISTORY(ParcelID, Description) VALUES (@ParcelId,'Received parcel by StationMgrSG on @TimeNow')",conn); 

в

SqlCommand cmad = new SqlCommand("INSERT INTO DELIVERYHISTORY(ParcelID, Description) VALUES (@ParcelId,'Received parcel by StationMgrSG on ' + @TimeNow)",conn); 

Проблема в том, вы передаете «@TimeNow», как часть строкового литерала вместо параметра.

0

Делает это так:

string getDate = DateTime.Now.ToString("MMMM dd yyyy hh:mmtt"); 

SqlCommand cmad = new SqlCommand("INSERT INTO DELIVERYHISTORY(ParcelID, Description) VALUES (@ParcelId,'Received parcel by StationMgrSG on ' + getDate)",conn); 

cmad.Parameters.AddWithValue("@ParcelId", parcelID); 
cmad.Parameters.AddWithValue("@TimeNow", getDate); 

Надеется, что это помогает.

+0

заботиться о правильном форматировании кода –

+0

Спасибо, человек, просто новый член здесь и пытается помочь кому-то. –

+0

Вот почему я сказал вам отформатировать ваш код, вместо этого для того, чтобы голосовать за сообщение. [Это поможет вам опубликовать хорошие ответы] (http://stackoverflow.com/help/how-to-answer) –

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