如何将日期时间传递给存储过程

时间:2013-09-30 05:58:19

标签: c# asp.net sql sql-server

string _name = txtName.Text;
string _addr = txtAddr.Text;
DateTime _dof = DateTime.Parse(drpDate.SelectedValue + drpMonth.SelectedValue + drpYear.SelectedValue);
string _country = drpCountry.SelectedValue;
string _gender = rdiomf.SelectedValue;

using (SqlConnection conn = conMgr.GetDatabaseConnection())
{
    using (SqlCommand cmd = new SqlCommand("insertStudent",conn))
    {
        cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.Clear();
        cmd.Parameters.AddWithValue("@sName", _name);
        cmd.Parameters.AddWithValue("@sAddress", _addr);
        cmd.Parameters.AddWithValue("@sDob", _dof);
        cmd.Parameters.AddWithValue("@sCountry", _country);
        cmd.Parameters.AddWithValue("@sGender", _gender);

        cmd.ExecuteNonQuery();
    }

    conn.Close();
}

错误表示日期错误。我使用下拉框获取日期。我怎样才能解决这个问题?请帮我。我是存储过程和asp.net的新手

5 个答案:

答案 0 :(得分:4)

使用新的日期时间。

DateTime _dof = new DateTime(Convert.ToInt32(drpYear.SelectedValue), Convert.ToInt32(drpMonth.SelectedValue), Convert.ToInt32(drpDate.SelectedValue));

答案 1 :(得分:1)

我认为使用三个下拉列表构建日期并不是一个好主意。处理验证非常困难。 (例如,2013年2月30日是有效日期??)请改用Patetimepicker中的.net版本。这一切都由框架处理。如果是客户端,请使用JQuery插件。

然后您可以简单地将dateTimePicker1.Value传递给store procedure参数。

对你来说会更容易。

答案 2 :(得分:1)

你正在尝试转换的方式,你试图转换让我们说010213这是你试图转换的格式,它将获取String was not recognized as a valid DateTime.错误。使用-来区分月份和年份。

DateTime _dof = Convert.toDateTime(drpDate.SelectedValue +"-"+ drpMonth.SelectedValue +"-"+drpYear.SelectedValue);

或者使用此过载。

enter image description here

答案 3 :(得分:0)

您可以使用jquery datepicker而不是三个下拉列表。

         <html lang="en">
      <head>
       <meta charset="utf-8" />
           <title>jQuery UI Datepicker - Default functionality</title>
            <link rel="stylesheet"href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
            <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
          <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
            <link rel="stylesheet" href="/resources/demos/style.css" />
                 <script>
                  $(function() {
                  $( "#datepicker" ).datepicker();
                  });
               </script>
           </head>
           <body>
            <p>Date: <input type="text" id="datepicker" /></p>
         </body>
            </html>

答案 4 :(得分:0)

您可以使用下面的下拉值: -

string _datetime = drpMonth.SelectedValue + drpDate.SelectedValue + drpYear.SelectedValue

Datetime _dof = Convert.ToDateTime(_datetime);