我正在开发一个采用csv文件并将数据放入sqlserver的软件。我现在用坏数据测试它,当我将数据字符串设置为长(在一行中)以便在数据库中导入时,我得到了错误:字符串或二进制数据将被截断,语句已经终止。这是正常的,这就是我应该期待的。现在我想在更新数据库之前检测到这些错误。有没有聪明的方法可以解决这个问题?
我的软件工作方式是我导入数据集中的每一行,然后向用户显示将要导入的数据。然后他可以单击按钮进行实际更新。然后我做一个dataAdapter.Update(Dataset,“something”)来更新数据库。
问题是错误行终止所有更新并报告错误。所以我想在更新服务器之前检测错误,以便插入其他行。
感谢
答案 0 :(得分:1)
您必须检查每行的列。查看是否超过了数据库中指定的最大值,如果是,则将其排除在插入之外。
另一种解决方案是显式截断数据并插入截断的内容,这可以通过使用SubString来完成。
答案 1 :(得分:1)
我所知道的唯一方法是预先检查字符限制的信息模式:
Select
Column_Name,
Character_Maximum_Length
From
Information_Schema.Columns
Where
Table_Name = 'YourTableName'
答案 2 :(得分:0)
您需要的是列元数据。
答案 3 :(得分:0)
或者,如果您已在数据库上打开记录集,则另一种解决方案是浏览字段对象以使用其长度来截断字符串。例如,使用ADO记录集/ VB代码,您可以使用类似这样的代码:
myRecordset.fields(myField) = left(myString, myRecordset.fields(myField).DefinedSize)