有没有一种方法可以确定哪个列会导致错误?

掠夺

我正在一个C#项目中,该项目从不同来源收集数据并将数据存储在SQL Server数据库中。我有时会得到String or binary data would be truncated.非常烦人的错误。我想确定哪个列导致此错误并记录下来。除了检查参数长度,还有其他方法吗?

我所做的是,如果该varchar(50)列为,则检查数据长度是否大于50。我感觉这就像是一种解决方案,想知道是否还有其他整洁的解决方案。

编辑

  if(data1.Length>50) logIt("col1, data1, condition");
    else if(data2.Length>80) logIt("col2, data2, condition");
else {
    SqlParameter p1 = (new SqlParameter("@p1", DbType.String));
                 p1.Value = string.IsNullOrEmpty(data1) ? SqlString.Null : (object)data1;
                 s1.Parameters.Add(p1);

    SqlParameter p2 = (new SqlParameter("@p2", DbType.String));
                 p2.Value = string.IsNullOrEmpty(data2) ? SqlString.Null : (object)data2;
                 s1.Parameters.Add(p2);

    s1.ExecuteNonQuery("UPDATE mytable SET col1=@p1,col2=@p2 WHERE condition=@condition");
    }


void logIt(string p){
     using (StreamWriter writer = new StreamWriter("log.txt"))
            {
              writer.WriteLine("Caused by:"+ p);
              writer.WriteLine(DateTime.Now);
              writer.WriteLine("--------------------------------------------");
            }
            }
赫尔格姆

就我个人而言,我将始终对照包含要使用的数据的表检查所有参数。如果该表显示varchar(50),则我的参数应不超过50。假设您可以类似地在c#端限制参数定义。不允许用户输入超出您的表格字段可接受范围的信息。

如果要从其他数据库或Excel电子表格中提取数据,则可能会有一系列不同的问题。

首先,您需要仔细检查传入的数据,并确定您当前拥有的列大小对于所需内容而言是否太小。我经常发现,当数据太大时,该字段中的信息是垃圾,应该扔掉(例如,有关联系人的注释之类的东西放在电子邮件字段中,而不是电子邮件中)。您甚至可能要考虑是否应该验证某些字段中的输入数据。

如果需要保持大小并且不担心丢失多余的字符,则需要将数据转换为正确的大小,然后再将其插入数据库,或者需要创建一个异常过程以提取记录无法将其发送到数据库的异常表中,并将其返回给拥有待修复原始数据的人员。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有一种方法可以确定Linux上的库使用的线程本地存储模型

来自分类Dev

Salesforce API:有没有一种方法可以确定两个随机表之间的关系

来自分类Dev

有没有一种方法可以在编译时确定成员偏移量?

来自分类Dev

有没有一种方法可以轻松地直观地确定Eclipse中的项目类型?

来自分类Dev

有没有一种方法可以确定参数是否具有此修饰符?

来自分类Dev

有没有一种方法可以在heroku open中指定heroku使用哪个浏览器?

来自分类Dev

有没有一种方法可以确定站点是否在AS3中启用了HSTS?

来自分类Dev

有没有一种方法可以确定angular.js中是否存在url查询参数?

来自分类Dev

有没有一种方法可以确定或指定BigQuery在哪个地理区域中存储数据?

来自分类Dev

有没有一种方法可以确定表格的文本是否适合?

来自分类Dev

有没有一种方法可以显示与第三列的列关系?

来自分类Dev

有没有一种方法可以确定TFS中的合并来自何处?

来自分类Dev

有没有一种方法可以确定Java中的应用程序服务器名称

来自分类Dev

有没有一种方法可以确定某个方法是否已在Java类中被覆盖

来自分类Dev

有没有一种方法可以传递(索引)SwiftUI中的ForEach中已按下哪个按钮?

来自分类Dev

有没有一种方法可以确定要在javascript数组中推送的值的数量?

来自分类Dev

Java-有没有一种方法可以生成随机但确定性的信号?

来自分类Dev

有没有一种方法可以排序表的列,但在确定的位置显示特定的行?

来自分类Dev

有没有一种方法可以确定哪种值组合会导致一列的总和最低?

来自分类Dev

有没有一种方法可以循环遍历plsql中的选定列

来自分类Dev

有没有一种方法可以确定传出连接中的哪个服务(在svchost.exe中)?

来自分类Dev

有没有一种方法可以比较哪个json响应的数组名称?

来自分类Dev

有没有一种方法可以获取tslint错误的行号?

来自分类Dev

有没有一种方法可以动态确定cuda流的数量?

来自分类Dev

有没有一种方法可以确定针对哪个内核模块编译了内核模块?

来自分类Dev

有没有一种方法可以确定dd的bs参数的最优值?

来自分类Dev

有没有一种方法可以显示与第三列的列关系?

来自分类Dev

有没有一种方法可以让您找出正在调用的函数的哪个/名称?

来自分类Dev

有没有一种方法可以确定哪个类在.NET中称为静态方法

Related 相关文章

  1. 1

    有没有一种方法可以确定Linux上的库使用的线程本地存储模型

  2. 2

    Salesforce API:有没有一种方法可以确定两个随机表之间的关系

  3. 3

    有没有一种方法可以在编译时确定成员偏移量?

  4. 4

    有没有一种方法可以轻松地直观地确定Eclipse中的项目类型?

  5. 5

    有没有一种方法可以确定参数是否具有此修饰符?

  6. 6

    有没有一种方法可以在heroku open中指定heroku使用哪个浏览器?

  7. 7

    有没有一种方法可以确定站点是否在AS3中启用了HSTS?

  8. 8

    有没有一种方法可以确定angular.js中是否存在url查询参数?

  9. 9

    有没有一种方法可以确定或指定BigQuery在哪个地理区域中存储数据?

  10. 10

    有没有一种方法可以确定表格的文本是否适合?

  11. 11

    有没有一种方法可以显示与第三列的列关系?

  12. 12

    有没有一种方法可以确定TFS中的合并来自何处?

  13. 13

    有没有一种方法可以确定Java中的应用程序服务器名称

  14. 14

    有没有一种方法可以确定某个方法是否已在Java类中被覆盖

  15. 15

    有没有一种方法可以传递(索引)SwiftUI中的ForEach中已按下哪个按钮?

  16. 16

    有没有一种方法可以确定要在javascript数组中推送的值的数量?

  17. 17

    Java-有没有一种方法可以生成随机但确定性的信号?

  18. 18

    有没有一种方法可以排序表的列,但在确定的位置显示特定的行?

  19. 19

    有没有一种方法可以确定哪种值组合会导致一列的总和最低?

  20. 20

    有没有一种方法可以循环遍历plsql中的选定列

  21. 21

    有没有一种方法可以确定传出连接中的哪个服务(在svchost.exe中)?

  22. 22

    有没有一种方法可以比较哪个json响应的数组名称?

  23. 23

    有没有一种方法可以获取tslint错误的行号?

  24. 24

    有没有一种方法可以动态确定cuda流的数量?

  25. 25

    有没有一种方法可以确定针对哪个内核模块编译了内核模块?

  26. 26

    有没有一种方法可以确定dd的bs参数的最优值?

  27. 27

    有没有一种方法可以显示与第三列的列关系?

  28. 28

    有没有一种方法可以让您找出正在调用的函数的哪个/名称?

  29. 29

    有没有一种方法可以确定哪个类在.NET中称为静态方法

热门标签

归档