【问题标题】:The conversion of a varchar data type to a datetime data type resulted in an out-of-range value in asp.net c#varchar 数据类型到 datetime 数据类型的转换导致 asp.net c# 中的值超出范围
【发布时间】:2014-05-31 01:47:57
【问题描述】:

我想将 ASP.Net C# 中的 DateTime 变量插入 SQL Server 数据库。由于某种原因,我收到此错误。

DateTime date = DateTime.Now; 

string sql2 = @"INSERT INTO registerTable (username,password,email,firstname,gw2user,typeofplay)
                VALUES ('" + user + "','" + pass + "','" + email + "','" + firstname + "','" + gw2user + "','" + type + "','" + date + "')";

日期列是datetime 日期类型。

【问题讨论】:

  • 如果有可能使用参数化查询,则永远不应使用未参数化查询。
  • 这肯定是一个意外错误,因为您似乎没有在日期字段中插入任​​何内容。我预计会出现与字段列表和值列表中的不同列数有关的错误。

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


【解决方案1】:

您的查询中缺少date 列。改成这个就可以消除错误了:

INSERT INTO registerTable (username,password,email,firstname,gw2user,typeofplay, date) VALUES ('" + user + "','" + pass + "','" + email + "','" + firstname + "','" + gw2user + "','" + type + "','"+date+"')

另外,请避免使用串联,而是使用参数化查询。

【讨论】:

    【解决方案2】:

    不要连接参数值,你最好使用参数

    string sql2 = @"INSERT INTO registerTable (username,password,email,firstname,gw2user,typeofplay, dateColumnName) VALUES (@username,@password,@email,@firstname,@gw2user,@typeofplay, @date)";
    

    阅读Working with Parameters

    那么你可以设置日期参数值如下

    cmd.Parameters.AddWithValue("@date", date);
    

    对其他参数也这样做。

    【讨论】:

      【解决方案3】:
      string sql2 = @"INSERT INTO registerTable (username,password,email,firstname,gw2user,typeofplay, dateColumnName) VALUES (@username,@password,@email,@firstname,@gw2user,@typeofplay, @date)";
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-13
        • 2011-11-12
        • 2016-02-08
        相关资源
        最近更新 更多