Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在asp.net中插入日期时出错_C#_Asp.net_Sql Server 2008_Ado.net - Fatal编程技术网

C# 在asp.net中插入日期时出错

C# 在asp.net中插入日期时出错,c#,asp.net,sql-server-2008,ado.net,C#,Asp.net,Sql Server 2008,Ado.net,通过asp.net将日期插入SQL Server 2008时出错 插入语句 Insert into comment(CommentFrom, CommentTo, Comment, Cmntonscrap, Cmnttime) Values('" + Session["UserName"] + "','" + email.Text.ToString() + "','" + txt.Text.ToString().Trim() + "','" + cscrap.Text.ToS

通过asp.net将日期插入SQL Server 2008时出错

插入语句

Insert into comment(CommentFrom, CommentTo, Comment, Cmntonscrap, Cmnttime) 
Values('" + Session["UserName"] + "','" + email.Text.ToString() + "','"  + 
       txt.Text.ToString().Trim() + "','" + cscrap.Text.ToString().Trim()  + 
       "','" + DateTime.Now.ToString().Trim() + "')";
错误:

字符串或二进制数据将被截断,语句将终止


您的问题不在于日期。
如果字符串数据对于一个列(可能是一个varchar)来说太大,那么您正试图将数据插入其中

我会检查你的
评论
txt.Text的长度
,看看是否可以插入数据

对您的
datetime
使用sql类型
datetime
。将日期存储在文本列中是不正确的

  • 它需要更多的存储空间
  • 搜索这些数据将非常困难
  • 你永远无法改变时区

    • 您的问题不在于日期。
      如果字符串数据对于一个列(可能是一个varchar)来说太大,那么您正试图将数据插入其中

      我会检查你的
      评论
      txt.Text的长度
      ,看看是否可以插入数据

      对您的
      datetime
      使用sql类型
      datetime
      。将日期存储在文本列中是不正确的

      • 它需要更多的存储空间
      • 搜索这些数据将非常困难
      • 你永远无法改变时区

      这意味着您为数据库表中的日期列或任何其他列(假设为varchar())指定的字段数据类型小于您尝试插入的大小。增加分配的大小,这意味着为数据库表中的日期列或任何其他列(假设为varchar())指定的字段的数据类型小于尝试插入的大小。增加您分配的大小

      如果sql语句是一种不好的方法(安全问题),您的数据库将很容易成为sql注入的目标

      我建议您使用存储过程来添加或修改所需的数据,并使用SqlParameters从用户界面发送输入

      可能有助于:

      下面是一个代码示例,演示如何使用C调用带有参数的存储过程#

      关于如何创建存储过程的示例

      CREATE PROCEDURE storedProcedure_Name
          -- Add the parameters for the stored procedure here
          @CommentFrom nvarchar(255) = NULL,
          @CommentTo nvarchar(255) = NULL
      AS
      BEGIN
          -- SET NOCOUNT ON added to prevent extra result sets from
          -- interfering with SELECT statements.
          SET NOCOUNT ON;
      
          -- Insert statements for procedure here
          INSERT INTO Comments (CommentFrom, CommentTo) VALUES(@CommentFrom, @CommentTo)
      END
      GO
      

      如果sql语句是一种不好的方法(安全问题),您的数据库将很容易成为sql注入的目标

      我建议您使用存储过程来添加或修改所需的数据,并使用SqlParameters从用户界面发送输入

      可能有助于:

      下面是一个代码示例,演示如何使用C调用带有参数的存储过程#

      关于如何创建存储过程的示例

      CREATE PROCEDURE storedProcedure_Name
          -- Add the parameters for the stored procedure here
          @CommentFrom nvarchar(255) = NULL,
          @CommentTo nvarchar(255) = NULL
      AS
      BEGIN
          -- SET NOCOUNT ON added to prevent extra result sets from
          -- interfering with SELECT statements.
          SET NOCOUNT ON;
      
          -- Insert statements for procedure here
          INSERT INTO Comments (CommentFrom, CommentTo) VALUES(@CommentFrom, @CommentTo)
      END
      GO
      


      您听说过吗?您不应该将这样的SQL语句连接在一起永远!我同意@marc_s的观点,这是一个非常糟糕的想法,你听说过吗?你永远不应该把这样的SQL语句连接在一起永远!我同意@marc_s,它的varchar是一个非常糟糕的想法,但之前它刚刚在其他表中插入,它正在产生问题。您插入的数据大小将不同。对于此类数据,请使用列类型
      Text
      nvarchar(MAX)
      。如果要设置限制,请使用TextBox
      MaxLength
      属性确保不允许插入太大的数据。YAa但它只是创建了一个带有日期的问题,日期为运行编辑我的答案的日期。从不将日期存储在文本中。现在,当从字符串转换日期和/或时间时,erro genratin转换失败。是它的varchar,但以前它刚刚插入到其他表中,它正在产生问题。插入的数据大小将不同。对于此类数据,请使用列类型
      Text
      nvarchar(MAX)
      。如果要设置限制,请使用TextBox
      MaxLength
      属性确保不允许插入太大的数据。YAa但它只是创建了一个带有日期的问题,日期为运行编辑我的答案的日期。从不在文本中存储日期。现在,当从字符串转换日期和/或时间时,erro genratin转换失败。@jeneous您为声明为varchar()的列分配了多少大小?“20”表示日期,但在其他表中声明了相同的大小,并且它们没有产生任何问题您确定这两个表中的数据类型,指定的尺寸相同吗?我现在试过了。时间和日期正确保存在表中,列为varchar(20)。所以我猜你的问题不在于日期栏,而是其他栏。尝试使用varchar()增加所有其他列的大小。创建表。错误是否特别指向日期和时间属性?我想不是@jeneous您为声明为varchar()的列分配了多少大小?“20”表示日期,但在其他表中声明了相同的大小,并且它们没有产生任何问题您确定在这两个表中指定的数据类型、大小相同吗?我现在尝试了。时间和日期正确保存在表中,列为varchar(20)。所以我猜你的问题不在于日期栏,而是其他栏。尝试使用varchar()增加所有其他列的大小。创建表。错误是否特别指向日期和时间属性?我想不是!虽然这是好消息。这并不是我问题的答案。不客气,如果你继续使用你的方法,我建议你使用String.Format(),这样代码将。。。格式良好。很幸运地检查了打字错误。它是
      SqlCommand
      ,而不是
      SqlCommane
      ,这是一个好信息。如果你继续使用你的方法,我建议你使用String.Format(),这样代码就可以