知道在更新数据库时是否会截断字符串

时间:2009-12-16 16:29:02

标签: c# sql-server dataset

我正在开发一个采用csv文件并将数据放入sqlserver的软件。我现在用坏数据测试它,当我将数据字符串设置为长(在一行中)以便在数据库中导入时,我得到了错误:字符串或二进制数据将被截断,语句已经终止。这是正常的,这就是我应该期待的。现在我想在更新数据库之前检测到这些错误。有没有聪明的方法可以解决这个问题?

我的软件工作方式是我导入数据集中的每一行,然后向用户显示将要导入的数据。然后他可以单击按钮进行实际更新。然后我做一个dataAdapter.Update(Dataset,“something”)来更新数据库。

问题是错误行终止所有更新并报告错误。所以我想在更新服务器之前检测错误,以便插入其他行。

感谢

4 个答案:

答案 0 :(得分:1)

您必须检查每行的列。查看是否超过了数据库中指定的最大值,如果是,则将其排除在插入之外。

另一种解决方案是显式截断数据并插入截断的内容,这可以通过使用SubString来完成。

答案 1 :(得分:1)

我所知道的唯一方法是预先检查字符限制的信息模式:

Select
    Column_Name,
    Character_Maximum_Length
From
    Information_Schema.Columns
Where
    Table_Name = 'YourTableName'

答案 2 :(得分:0)

您需要的是列元数据。

MSDN: SqlConnection.GetSchema Method

答案 3 :(得分:0)

或者,如果您已在数据库上打开记录集,则另一种解决方案是浏览字段对象以使用其长度来截断字符串。例如,使用ADO记录集/ VB代码,您可以使用类似这样的代码:

myRecordset.fields(myField) = left(myString, myRecordset.fields(myField).DefinedSize)