2016-07-19 17 views
1

Ich versuche, eine neue Zeile in eine Tabelle in meiner SQL-Datenbank über eine webform einfügen.SQL-Anweisung für ExecuteNonQuery in C#

Das Problem ist, dass ich den Wert DateTime in der Beschreibung, wenn die Zuordnung von Lieferer getan wurde, platzieren muss.

Aber weil der Wert ein String und die Anforderung ist, ist so etwas wie dieses "Received parcel by StationMgrSG on 19 July 2016 10:34am" angezeigt werden, aber meine Codes ist so etwas wie dieses „Empfangene Paket durch StationMgrSG auf @TimeNow“

Wie verändern sich die Anzeige i den Wert, so dass es zeigt Datum und Uhrzeit an?

Dies ist mein Code:

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; 
    } 

Antwort

2

Um dies zu erreichen Sie den Code so ändern haben:

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()); 

Zusätzliche Anmerkung, Sie haben das Dateformat innerhalb der .ToString() Methode angeben können, wenn erforderlich. dann sieht der @TimeNow sieht nun wie folgt:

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

Noch besser, wenn Sie eine DateTime-Spalte in der DB für diese Daten haben. –

0

Sie müssen nur

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

zu

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

Das Problem, das Sie vorbei ist '@TimeNow' als Teil eines String-Literals anstelle eines Parameters.

0

Machen Sie es wie folgt aus:

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); 

Hoffe, es hilft.

+0

sorge dafür, den Code richtig zu formatieren –

+0

Danke Mann ,, ich bin nur neues Mitglied hier und versuchen, einige zu helfen .. –

+0

Deshalb habe ich Ihnen gesagt, um Ihren Code zu formatieren, stattdessen für die Abstimmung der Post. [Dies wird Ihnen helfen, gute Antworten zu posten] (http://stackoverflow.com/help/how-to-answer) –