![](/img/trans.png)
[英]SQL Server Nvarchar(MAX) variable length issue in stored procedure parameter
[英]nvarchar(max) field is empty when I insert ~81192 characters in it on SQL Server
當我嘗試在名為ProductDetail( nvarchar(MAX))
一列中插入新記錄時。 我插入的值約為81192個字符。 然后,該列為空。 我插入的值很小,然后插入就可以了嗎? 我該如何解決這個問題?
FakeDtbDataContext dt=new FakeDtbDataContext();
...
string sql = "Insert Into SanPham(IDNhomSP,ChiTiet) Values('" + prDetail + "','" + FCK.Value + "')";
dt.ExecuteCommand(sql);
SQL版本是10.50.1600。
我調試了,它具有價值。 我使用遠程SQL Server運行腳本。
我使用LinQ語句插入,LinQ本身可能會阻止注入。 該列仍然為空:(
var sanPham = new SanPham
{
IDNhomSP = nhomhang,
ChiTiet = FCK.Value
};
dt.SanPhams.InsertOnSubmit(sanPham);
dt.SubmitChanges();
也許不是解決方案,但請始終使用參數化查詢! 如果prDetail
或FCK.Value
包含撇號,則您的sql代碼會中斷,並且更糟的是,您的代碼已打開以進行SQL注入:) !
像這樣:
string sql = "Insert Into SanPham(IDNhomSP,ChiTiet) Values(@prDetail, @FCKValue)";
並在執行之前將prDetail和FCK.Value的值作為參數添加到命令中。
您如何看待該列為空?
SSMS編輯行不會顯示太長的字符串,但是選擇將...
如果確定該值為空,是否可以指定用於Entity Framework的代碼生成方式(如果不使用默認代碼生成方式),如果使用Code First,並確保SSDL為
<Property Name="ChiTiet" Type="nvarchar(max)" />
並不是
<Property Name="ChiTiet" Type="nvarchar" MaxLength="max" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.