【问题标题】:SQL Statement for ExecuteNonQuery in C#C# 中 ExecuteNonQuery 的 SQL 语句
【发布时间】:2016-07-19 02:37:21
【问题描述】:

我正在尝试通过webform 在我的SQL 数据库中的表中插入一个新行。

问题是我需要将DateTime 值放在送货员分配完成时间的描述中。

但是因为该值是一个字符串,并且要求显示类似 "Received parcel by StationMgrSG on 19 July 2016 10:34am" 的内容,但我的代码显示类似“StationMgrSG on @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;
    }

【问题讨论】:

    标签: c# sql sql-server executenonquery


    【解决方案1】:

    要实现这一点,您必须像这样修改代码:

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

    补充说明,如果需要,您可以在 .ToString() 方法中指定 DateFormat。那么@TimeNow 将如下所示:

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

    【讨论】:

    • 如果您在数据库中有一个用于此数据的 DateTime 列,那就更好了。
    【解决方案2】:

    你只需要改变这一行

    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”作为字符串文字的一部分而不是参数传递。

    【讨论】:

      【解决方案3】:

      这样做:

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

      希望对你有帮助。

      【讨论】:

      • 这就是为什么,我告诉你格式化你的代码,而不是投反对票。 This will help you to post good answers
      • 还不知道如何格式化我的代码,我只是在回答,不在乎他们是否对我投了反对票。也许有一天我知道如何在这里格式化。
      • 需要分享我的想法并提供给其他需要它的人。谢谢@un-lucky
      猜你喜欢
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多