C# 在asp.net中插入日期时出错
通过asp.net将日期插入SQL Server 2008时出错 插入语句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
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
。将日期存储在文本列中是不正确的
- 它需要更多的存储空间
- 搜索这些数据将非常困难李>
- 你永远无法改变时区
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)
。如果要设置限制,请使用TextBoxMaxLength
属性确保不允许插入太大的数据。YAa但它只是创建了一个带有日期的问题,日期为运行编辑我的答案的日期。从不将日期存储在文本中。现在,当从字符串转换日期和/或时间时,erro genratin转换失败。是它的varchar,但以前它刚刚插入到其他表中,它正在产生问题。插入的数据大小将不同。对于此类数据,请使用列类型Text
或nvarchar(MAX)
。如果要设置限制,请使用TextBoxMaxLength
属性确保不允许插入太大的数据。YAa但它只是创建了一个带有日期的问题,日期为运行编辑我的答案的日期。从不在文本中存储日期。现在,当从字符串转换日期和/或时间时,erro genratin转换失败。@jeneous您为声明为varchar()的列分配了多少大小?“20”表示日期,但在其他表中声明了相同的大小,并且它们没有产生任何问题您确定这两个表中的数据类型,指定的尺寸相同吗?我现在试过了。时间和日期正确保存在表中,列为varchar(20)。所以我猜你的问题不在于日期栏,而是其他栏。尝试使用varchar()增加所有其他列的大小。创建表。错误是否特别指向日期和时间属性?我想不是@jeneous您为声明为varchar()的列分配了多少大小?“20”表示日期,但在其他表中声明了相同的大小,并且它们没有产生任何问题您确定在这两个表中指定的数据类型、大小相同吗?我现在尝试了。时间和日期正确保存在表中,列为varchar(20)。所以我猜你的问题不在于日期栏,而是其他栏。尝试使用varchar()增加所有其他列的大小。创建表。错误是否特别指向日期和时间属性?我想不是!虽然这是好消息。这并不是我问题的答案。不客气,如果你继续使用你的方法,我建议你使用String.Format(),这样代码将。。。格式良好。很幸运地检查了打字错误。它是SqlCommand
,而不是SqlCommane
,这是一个好信息。如果你继续使用你的方法,我建议你使用String.Format(),这样代码就可以