0

私のオブジェクトWDst、WDet、SATst、SATetは、テキストボックスからの時間の値を含むDATETIMEクラスオブジェクトです。

SPのすべての開始時刻と終了時刻のパラメーターはdATAタイプ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

私の最善の策は、DateTimeオブジェクトのカスタム形式でToString()メソッドを使用する必要があることです。そして、それを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 に答える