0

我有这个功能ExecuteSqlParameterizedQuery,下面是我的查询:

Queryobj.ExecuteSqlParameterizedQuery(String.Format("INSERT INTO tbladd(ID,MyDateTime,Birthday)values({0},@dta, @dtb)", m_Id, MyDateTime.ToString(), MyBirthday.ToString());
  1. MyDateTimeDateTime数据类型。
  2. MyBirthdayDateTime数据类型。

这是我的功能:

readonly SqlConnection con = new SqlConnection(PC_Software.Properties.Settings.Default.DbConnectionString);

    public void ExecuteSqlParameterizedQuery(string SQL, string measdt, string dob)
    {
        try
        {
            using (var cmd = new SqlCommand())
            {
                con.Open();
                cmd.Connection = con;
                cmd.Parameters.Clear();  
                cmd.Parameters.AddWithValue("@dta", measdt);
                if(dob != "0DATA#")
                {
                    cmd.Parameters.AddWithValue("@dtb", dob);
                }
                cmd.CommandText = SQL;
                cmd.ExecuteNonQuery();
            }
            con.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

这向我展示了这个特殊的错误:the conversion of a nvarchar data type to a datetime data type resulted in an out-of-range value. the statement has been terminated.

我试图找到问题,但无法理解如何对我的代码进行更改以纠正问题。

编辑:

我也有这个作为我的日期时间界面:

public interface enn
{
    DateTime MyDateTime
    {
        get;
        set;
    }
}

日期时间声明是这样的:

    DateTime? MyBirthday
    {
        get;
        set;
    }
4

2 回答 2

1

当您将MyBirthday参数传递给方法时,您将其转换为字符串:

MyBirthday.ToString()

您应该将其保留为DateTime- 并且与MyDateTime

您显然需要更改方法签名以接受这些值

于 2013-05-23T13:04:56.693 回答
0

尝试使用:

我的日期时间.日期

我的生日.日期

Queryobj.ExecuteSqlParameterizedQuery(String.Format("INSERT INTO tbladd(ID,MyDateTime,Birthday)values({0},@dta, @dtb)", m_Id, MyDateTime.Date, MyBirthday.Date);
于 2013-05-23T13:06:10.230 回答