0

我的对象 WDst,WDet,SATst,SATet 是 DATETIME 类对象,其中包含来自文本框的时间值。

我的 SP 中的所有开始时间和结束时间参数都是数据类型 Time(7) 我如何使用 DateTime 对象

我使用以下代码在我的数据库中插入一个时间表:

public void AddSchedule()
{
 connect = DAL.Con;
    SqlCommand com = new SqlCommand();
    com.Connection = connect;
    com.CommandType = CommandType.StoredProcedure;
    com.CommandText = "AddSchedule";
    SqlParameter parameters = new SqlParameter();
    com.Parameters.Add(new SqlParameter("SchedName",SqlDbType.VarChar)).Value=Schedulename;
    com.Parameters.Add(new SqlParameter("startTime",SqlDbType.Time)).Value=WDst;
    com.Parameters.Add(new SqlParameter("endTime",SqlDbType.Time)).Value=WDet;
    com.Parameters.Add(new SqlParameter("SatStartTime", SqlDbType.Time)).Value=SATst;
    com.Parameters.Add(new SqlParameter("SatEndTime", SqlDbType.Time)).Value=SATet;
    connect.Open();
    com.ExecuteNonQuery();
    connect.Close();
}

Com.ExecuteNonQuery 发生错误...我的存储过程没有任何问题。

如何仅从保存时间值的日期时间对象中保存时间,如下所示:

protected void SaveSched_Click(object sender, EventArgs e)
{
    Schedule obj = new Schedule();
    obj.Schedulename = SchedName.Text;
    obj.WDst = Convert.ToDateTime(StartTime.Text);
    obj.WDet = Convert.ToDateTime(EndTime.Text);
    obj.SATst = Convert.ToDateTime(SatSt.Text);
    obj.SATet = Convert.ToDateTime(SatEt.Text);
    obj.AddSchedule();
}
4

2 回答 2

2

我最好的选择是您必须使用 ToString() 方法和 DateTime 对象的自定义格式。并将其作为字符串而不是 DateTime 对象传递给数据库。

有关 DateTime 对象的自定义格式,请参阅此 URL:http: //msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

例如:

DateTime now = DateTime.Now;
now.ToString("yyyy-MM-dd HH:mm:ss"); //Outputs 2012-10-13 20:40:35
now.ToString("HH:mm:ss"); //Will then output 20:40:35
于 2012-10-13T18:41:38.467 回答
1

尝试

com.Parameters.Add(
           new SqlParameter("startTime",SqlDbType.Time)).Value = 
                               WDet.ToString("HH:mm:ss");
于 2012-10-13T18:50:22.910 回答