点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
在 ADO.NET 中使用准备好的查询语句,SDK 16.0 SP03 PL04中的驱动程序带有WRITETEXT截断变量 在准备好的查询中使用
相关:SAP KBA(2349625)
详细信息
在使用准备好的查询进行WRITETEXT操作时,如果要写入的内容作为准备好的查询变量传递给命令,并且其长度大于16384字节,则插入的内容仍将被截断
AseCommand命令=新的AseCommand(" WRITETEXT#dxp_spec_text_temp.text_data @rtfPointer @ p0");
command.Parameters.Add(新的AseParameter
{
值="长度大于16384字节/字符的内容",
方向= ParameterDirection.Input,
ParameterName =" @ p0"
});
command.ExecuteNonQuery(); //没有错误,数据会被驱动程序静默截断
解决方法
如果您将要写入的内容直接写入传递给AseCommand的查询字符串中,那么该内容就不会被截断。 但是,由于要使用常规的字符串联系操作将要插入的内容添加到查询中,因此 这会在客户端应用程序中创建SQL注入漏洞
string command =" WRITETEXT#dxp_spec_text_temp.text_data @rtfPointer'{0}'";
command = string.Format(command,"长度大于16384字节/字符的内容")
AseCommand命令=新的AseCommand(命令);
command.ExecuteNonQuery(); //成功,没有数据被截断
我们应该如何使用16.0 ADO将大格式的数据插入文本列而不会引起这种风险 .NET 驱动程序?
嗨,
尝试将TextSize添加到连接字符串。 导致截断的ASE的页面大小。
参考:
https://help.sap.com/查看器/54c3945e6dd14033889f875bed1323ce/16.0.3.8/en-US/b04d6739bbf91014aa378f4742e834b9.html
告诉我是否可以解决问题。
谢谢,
黎明K
一周热门 更多>