[英]Error While inserting date in asp.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.ToString().Trim() +
"','" + DateTime.Now.ToString().Trim() + "')";
錯誤:
字符串或二進制數據將被截斷,語句終止
您的問題不在於日期。
它的字符串數據對於列(可能是varchar)太大,您試圖將數據插入其中。
我將檢查您的Comment
和txt.Text
的長度,並txt.Text
可以插入數據。
使用SQL類型datetime
作為DateTime
。 在文本列中存儲日期會帶來很多麻煩 。
這意味着您為數據庫表中的date列或任何其他列(假設varchar())指定的字段的數據類型小於您嘗試插入的大小。 增加您分配的大小
合並sql語句是一個錯誤的方法(安全性問題) ,您的數據庫將很容易成為Sql注入的目標。
建議您使用存儲過程來添加或修改所需的數據,並使用SqlParameters從用戶界面發送輸入。
可能有幫助: 如何創建存儲過程
這是一個代碼示例,向您展示如何使用C#調用帶參數的存儲過程
//The method that call the stored procedure
public void AddComment()
{
using(var connection = new SqlConnection("ConnectionString"))
{
connection.Open();
using(var cmd = new SqlCommand("storedProcedure_Name", connection) { CommandType = CommandType.StoredProcedure })
{
cmd.Parameters.AddWithValue("@CommentFrom", commandFrom);
cmd.Parameters.AddWithValue("@CommentTo", commentTo);
//...And so on
cmd.ExecuteNonQuery();
}
}
}
有關如何創建存儲過程的示例
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.