这让我很沮丧,我还没有找到有效的答案或解决方案。有很多帖子和回复,但没有一个能够真正解释有效的解决方案。
Access 易受攻击的配置表包括:
Field Name Data Type
cveid Test
logicaltest Memo
一个完全空的易受攻击的配置表填充了完全唯一的数据的相关代码位:
mycon = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + accessDb + ";Persist Security Info=False");
mycon.Open();
...
insertCommand = new OleDbCommand("INSERT INTO vulnerableconfiguration (cveid, logicaltest) VALUES (@cveid, @logicaltest);", mycon);
insertCommand.Parameters.Add("@cveid", OleDbType.Char).Value = cve_id);
insertCommand.Parameters.Add("@logicaltest", OleDbType.LongWChar).Value = vulnerable_configuration);
insertCommand.ExecuteNonQuery();
logicaltest 字段值被截断,我不知道为什么。连第一条记录也从 780 个字符截断到 370 个字符!所有备忘录字段都应符合备忘录大小限制。没有错误。我已经对其进行了调试,insertCommand 参数中设置的值具有完整值,但是在执行命令时,Access DB 具有截断值。
如果有人有任何想法,那对遇到这个问题的每个人来说都会很棒。
请不要让我参考http://allenbrowne.com/ser-63.html,这些案例都没有处理这种直接的 Access 插入案例。此外,Access 2007/2010 没有备忘录数据类型的最大长度设置,它应该会增长。
为什么我使用 Access?这是用于 Access DB 的导入工具,用于查找目的。其他人可以编写一些简单的查询和报告以从中获取他们想要的信息。不被用作后端,而且 MSSQL 对于这个目的来说太重了。
谢谢!
更新
为备忘录字段参数切换到 OleDbType.LongWChar 但填充 Access 记录后我仍然会得到相同的截断。