1

我需要将从 ASP.Net 文本框中获取的日期存储到 SQL Server 2008date列中。

我收到以下异常消息。

从字符串转换日期和/或时间时转换失败。

我的代码是:

SqlConnection cn;
SqlCommand cmd;
SqlDataAdapter da;

int n=4;
protected void Page_Load(object sender, EventArgs e)
{
    cn = new SqlConnection(<Connection String>);
}

protected void Button1_Click(object sender, EventArgs e)
 {
        try
      {
          string query = "insert into temp values('" + TextBox1.Text  + "')";
          cn.Open();
          cmd = new SqlCommand(query, cn);
          cmd.ExecuteNonQuery();
          cn.Close();
          Response.Write("Record inserted successfully");
     }
    catch (Exception ex)
    {
         Response.Write(ex.Message);
    }

}

请帮忙 ..

提前致谢

4

3 回答 3

4

将您的代码更改为以下内容(假设中的列temp实际上是 a DateTime):

protected void Button1_Click(object sender, EventArgs e)
{
    try
    {
        string query = "insert into temp values(@Value)";
        cn.Open();
        cmd = new SqlCommand(query, cn);
        cmd.Parameters.AddWithValue("@Value", DateTime.Parse(TextBox1.Text));
        cmd.ExecuteNonQuery();
        cn.Close();
        Response.Write("Record inserted successfully");
 }
catch (Exception ex)
{
     Response.Write(ex.Message);
}

}

您还应该更改逻辑以验证这TextBox1.Text实际上是一个有效日期。

于 2013-02-02T11:21:09.103 回答
0
  1. 请检查列数据类型是否设置为日期时间
  2. 在插入数据库之前使用 convert.ToString
于 2013-02-02T11:22:06.040 回答
0

您必须进行多项更改

  1. 将您的日期转换为 DateTime
  2. 将值作为参数传递以避免 SQL 注入
  3. 在 DB 中将该字段设置为 DateTime。

你的代码会是这样的

SqlConnection cn;
SqlCommand cmd;
SqlDataAdapter da;

int n=4;
protected void Page_Load(object sender, EventArgs e)
{
cn = new SqlConnection(<Connection String>);
}

protected void Button1_Click(object sender, EventArgs e)
{
    try
    {
      string query = "insert into temp values(@date))";
      cn.Open();
      cmd = new SqlCommand(query, cn);
      cmd.Parameters.AddWithValue("@date",Convert.DateTime(TextBox1.Text));
      cmd.ExecuteNonQuery();
      cn.Close();
      Response.Write("Record inserted successfully");
    }
    catch (Exception ex)
    {
     Response.Write(ex.Message);
    }

}
于 2013-02-02T11:25:03.203 回答