簡體   English   中英

當我在SQL Server上的〜81192個字符中插入nvarchar(max)字段時為空

[英]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();

也許不是解決方案,但請始終使用參數化查詢! 如果prDetailFCK.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM