c# - 当我在 SQL Server 上插入 ~81192 个字符时,nvarchar(max) 字段为空

标签 c# sql sql-server linq

当我尝试将新记录插入名为 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。

我调试过,它有值(value)。我使用远程 SQL Server 运行脚本。

我已经使用 LinQ 语句插入,LinQ 本身可能会阻止注入(inject)。该列仍然为空:(

var sanPham = new SanPham
{
     IDNhomSP = nhomhang,
     ChiTiet = FCK.Value
};
dt.SanPhams.InsertOnSubmit(sanPham);
dt.SubmitChanges();

最佳答案

也许不是解决方案,但始终使用参数化查询!如果 prDetailFCK.Value 包含撇号,则您的 sql 代码会中断,更糟糕的是,您的代码会针对 SQL injection :) 打开。 !

像这样:

string sql = "Insert Into SanPham(IDNhomSP,ChiTiet) Values(@prDetail, @FCKValue)";

并在执行前将您的 prDetail 和 FCK.Value 的值作为参数添加到命令中。

关于c# - 当我在 SQL Server 上插入 ~81192 个字符时,nvarchar(max) 字段为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8864234/

相关文章:

mysql - mysql中3个表之间的关系

sql-server - SQL Server : multi-column index

sql - 在 Microsoft SQL Server 2000 中模拟 MySQL LIMIT 子句

c# - 在 C#、SQL Server : trying to update if value already present else insert 中执行查询时出错

c# - async/await 对 IO 操作做了什么?

c# - 使用 AccountManagement 扩展类时如何设置二进制属性?

c# - 如何使用 RazorGenerator 而不是 T4 来生成 C# 文件?

mysql - 我应该在什么时候创建一个单独的表(mysql)?

c# - Gradle 支持构建 .Net 项目

sql - 执行SQL中只存在一个