我正在编写一个实用程序 C#,将包含大约 80 列的大型 CSV 导入 SQL Server 2008 表。
CSV 需要在导入之前进行操作,例如合并一些列、转换日期等。因此,我正在构建如下INSERT INTO
语句:
INSERT INTO table VALUES ('abc','blah',...)
我的问题是该表包含一个类型的列UNIQUEINDENTIFIER
。这是一个问题,因为我想重新使用现有的方法,该方法采用一组值并返回值的字符串以直接弹出到我的INSERT INTO
语句中,处理撇号,消除注入攻击等。
有没有一种方法UNIQUEIDENTIFIER
可以为我传递给这个方法的有效文字?我试过Guid.NewGuid.ToString()
了,这给了我这样的文字'bfdb0297-2018-4555-ac12-88064944a671'
,但我的查询随后出现数据截断异常错误。我还尝试删除连字符。我预计 32 个十六进制字符可以工作。
我知道参数化查询是正确的方法,但这意味着对现有代码的重大返工。
我很擅长 C# 和 SQL Server 虚张声势。
[编辑]
我做了几件事。首先,编写一个查询,用 Guid.NewGuid 更新该列。因此,截断错误不是从那里开始的。检查 SQL Server 参考使我相信截断错误不是从 id 列中的错误值返回的,而是无效值错误。我还考虑了 Aaron 的评论,即重要的工作并不是不正确的借口,并创建了一种方法来生成参数化查询,该方法现在可以正常工作。
非常感谢所有响应者。