跟踪一下,sql server帮助里面有关于异常的介绍

解决方案 »

  1.   

    catch(SqlException e)
    {
    Response.Write(e.ToString());
    }
      

  2.   

    to: bitsbird(一瓢.net)
    兄弟,不是asp.net啊!using System.Windows.Forms;try
    {
      //your code............
    }
    catch(SqlException e)
    {
      MessageBox.Show(e.ToString());
    }看看是什么错误,然后修改代码
      

  3.   

    这个我知道的,谢谢
    我的意思是说如何分辨出这个错误是并发的错误
    比如说:在客户端选择一个座位,同时在另一个客户端也对这个作为进行了选择,这时会返回这个SqlException的异常,但是我如何分辨这个异常是由于并发问题引起的呢?
    而且,使这两个客户端都将收到这个异常吗?这个好像是数据库的东西,嘿嘿,我忘记了,顺便问了吧
    谢谢
      

  4.   

    SQL的帮助中有,你自己查吧,在index中输1,太多了,先举200个错误 严重度 描述(消息文本) 
    1 10 上次升级的版本日期: 10/11/90. 
    21 10 警告:严重错误 %1! 发生于 %2!。请记下错误和时间,然后与系统管理员联系。 
    102 15 在 ''%1!'' 附近有语法错误。 
    103 15 以 ''%2!'' 开头的 %1! 太长。最大长度为 %4!。 
    104 15 如果语句中包含 UNION 运算符,那么 ORDER BY 子句中的项就必须出现在选择列表中。 
    105 15 字符串 ''%1!'' 之前有未闭合的引号。 
    106 16 查询中的表名太多。允许的最大数目为 %1!。 
    107 15 列前缀 ''%1!'' 与查询中所用的表名或别名不匹配。 
    108 15 ORDER BY 子句中的位置号 %1! 超过了选择列表中项数目。 
    109 15 INSERT 语句中列的数目大于 VALUES 子句中指定的值的数目。VALUES 子句中值的数目必须与 INSERT 语句中指定的列的数目匹配。 
    110 15 INSERT 语句中列的数目小于 VALUES 子句中指定的值的数目。VALUES 子句中值的数目必须与 INSERT 语句中指定的列的数目匹配。 
    111 15 ''%1!'' 必须是批查询中的第一条语句。 
    112 15 %1! 语句中不允许有变量。 
    113 15 缺少注释的结尾标记 '*/'。 
    114 15 对于将值赋给变量的语句,浏览模式无效。 
    116 15 当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。 
    117 15 %1! 名称 ''%2!'' 包含的前缀数目超过了最大值。最大值为 %4!。 
    118 15 只有 sysadmin 角色的成员才能指定 %2! 语句的 %1! 选项。 
    119 15 必须传递参数个数 %1!,并以 '@name = value' 的形式传递后续的参数。一旦使用了 '@name = value' 形式之后,所有后续的参数就必须以 '@name = value' 的形式传递。 
    120 15 INSERT 语句的选择列表包含的项少于插入列表中的项。SELECT 语句中值的数目必须与 INSERT 语句中列的数目匹配。 
    121 15 INSERT 语句的选择列表包含的项多于插入列表中的项。SELECT 语句中值的数目必须与 INSERT 语句中列的数目匹配。 
    122 15 %1! 选项只允许用于 %2! 语法。 
    123 15 批/过程超过了 %1! 个字符的最大长度。 
    124 15 CREATE PROCEDURE 不包含任何语句。 
    125 15 Case 表达式只能嵌套到 %1! 层。 
    128 15 在此上下文中不允许使用名称 ''%1!''。此处只允许使用常量、表达式或变量。不允许使用列名。 
    129 15 填充因子 %1! 是无效百分比;填充因子必须介于 1 到 100 之间。 
    130 16 不能对包含聚合或子查询的表达式执行聚合函数。 
    131 15 赋予 %2! ''%3!'' 的大小(%1!)超过了任意数据类型的最大允许值(%5!)。 
    132 15 标签 ''%1!'' 已声明。标签名称在批查询或存储过程内部必须唯一。 
    133 15 GOTO 语句指向了标签 ''%1!'',但该标签尚未声明。 
    134 15 变量名 ''%1!'' 已声明。变量名在批查询或存储过程内部必须唯一。 
    135 15 不能在 WHILE 语句的作用域之外使用 BREAK 语句。 
    136 15 不能在 WHILE 语句的作用域之外使用 CONTINUE 语句。 
    137 15 必须声明变量 ''%1!''。 
    138 15 不允许在子查询中使用相关子句。 
    139 15 不能向局部变量赋予默认值。 
    140 15 只能在 CREATE TRIGGER 语句内部使用 IF UPDATE。 
    141 15 向变量赋值的 SELECT 语句不能与数据检索操作结合使用。 
    142 15 约束 ''%1!'' 的定义中有错误语法。 
    143 15 在排序依据列表中没有找到 COMPUTE BY 子句中的某一项。计算依据列表中的所有表达式也必须同时出现在排序依据列表中。 
    144 15 在用于 GROUP BY 子句分组依据列表的表达式中,不能使用聚合或子查询。 
    145 15 如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中。 
    146 15 未能为子查询分配辅助表。超出了查询中表数目的最大值(%1!)。 
    147 15 聚合不应出现在 WHERE 子句中,除非该聚合位于 HAVING 子句或选择列表所包含的子查询中,并且要对其进行聚合的列是外部引用。 
    148 15 WAITFOR 所用的时间字符串 ''%1!'' 中时间语法有误。 
    149 15 WAITFOR 所用的时间值 ''%1!'' 是无效值。请检查日期/时间语法。 
    150 15 外联接的两项都必须包含列。 
    151 15 ''%1!'' 是无效 money 值。 
    153 15 在 %3! 语句中有 %1! 选项的无效使用。 
    154 15 在 %2! 中不允许使用 %1!。 
    155 15 ''%1!'' 不是可以识别的 %3! 选项。 
    156 15 在关键字 ''%1!'' 附近有语法错误。 
    157 15 聚合不应出现在 UPDATE 语句的集合列表中。 
    159 15 对于 DROP INDEX,必须以 tablename.indexname 的形式同时给出表名和索引名。 
    160 15 规则不包含变量。 
    161 15 规则包含多个变量。 
    163 15 计算依据列表与排序依据列表不匹配。 
    164 15 GROUP BY 表达式必须引用出现在选择列表中的列名。 
    165 16 不能授予或废除特权 %1!。 
    166 15 ''%1!'' 不允许将数据库名称指定为对象名前缀。 
    167 16 不能在临时对象上创建触发器。 
    168 15 %1! ''%2!'' 超出了计算机表示范围(%4! 字节)。 
    169 15 在排序依据列表中多次指定了某一列。排序依据列表中的列必须是唯一的。 
    170 15 第 %1! 行:在 ''%1!'' 附近有语法错误。 
    171 15 不能在浏览模式中使用 SELECT INTO。 
    172 15 不能在浏览模式中使用 HOLDLOCK。 
    173 15 列 ''%1!'' 的定义中必须包括数据类型。 
    174 15 %1! 函数要求有 %2! 个参数。 
    177 15 仅当 SELECT 语句中有 INTO 子句时,才能使用 IDENTITY 函数。 
    178 15 在此上下文中不能使用带有返回值的 RETURN 语句。 
    179 15 向存储过程传递常量时不能使用 OUTPUT 选项。 
    180 15 此 %1! 语句中参数太多。参数最大数目为 %2!。 
    181 15 不能在 DECLARE 语句中使用 OUTPUT 选项。 
    182 15 必须为 READTEXT 或 WRITETEXT 实用工具提供表名和列名。 
    183 15 列 ''%2!'' 的小数位数(%1!)必须介于 %4! 到 %5! 之间。 
    185 15 数据流在大容量形式下的 WRITETEXT 语句中无效。 
    186 15 WRITETEXT 语句中缺少数据流。 
    188 15 在 CREATE DATABASE 语句中,如果不同时指定至少一个非日志设备,就不能指定日志设备。 
    189 15 %1! 函数要求有 %2! 到 %3! 个参数。 
    191 15 SQL 语句的某些部分嵌套过深。请重写查询或将其分解为若干较小的查询。 
    192 16 小数位数必须小于或等于精度。 
    193 15 以 ''%1!'' 开头的对象名或列名太长。最大长度为 %3! 个字符。 
    194 15 SELECT INTO 语句不能包含向变量赋值的 SELECT 语句。 
    195 15 ''%1!'' 不是可以识别的 %3!。 
    196 15 SELECT INTO 必须是包含 UNION 运算符的 SQL 语句中的第一个查询。 
    197 15 无法在向表插入变量时将 EXECUTE 用作源。 
    198 15 浏览模式对于包含 UNION 运算符的语句无效。 
    199 15 INSERT 语句不能包含向变量赋值的 SELECT 语句。 
      

  5.   

    在sql里查?不知道在哪里啊
    是查询分析器吗?
    谢谢
      

  6.   

    UP
    UP
    catch(SqlException e)
    {
      MessageBox.Show(e.ToString());
    }
      

  7.   

    catch (DBConcurrencyException ex)
    {
       throw ex;
    }这样捕捉并发异常。一般包括两种情形:
    1、你要修改的,在数据库中已经被删除(若关键字被修改,也一样)。
    2、非关键字段被修改。处理起来是非常复杂的,没有成例。一般考虑以下几点:
    1、提示用户数据的版本:你载入的数据、你准备将其修改为什么样子、目前数据库中是怎样的。
    2、用户决定:覆盖数据库中的数据,或者使用数据库中的数据刷新本地
    3、ex.row[x,版本号]能够得到不同版本的数据,但当前数据库中的数据必须用新的查询获得。懒惰的方式,取决于你的策略,比如:
    1、无条件覆盖数据库中当前的数据,这样用户并不会知道其修改期间的变化
    2、分辨:若仅修改了非关键字段,则由用户回到维护界面修改。总之相当复杂,做好3天时间演练的打算。参考下面的内容:
    ms-help://MS.MSDNQTR.2003FEB.2052/vbcon/html/vbwlkHandlingConcurrencyException.htm
      

  8.   

    byx45(byx45) 
    谢谢
    很感谢你的回答,我还想问一下的就是,我其实就是想捕捉到这个异常后判断一下他已经被修改就成了,这个如何用DBConcurrencyException判断呢?
      

  9.   

    byx45(byx45) 
    谢谢
    很感谢你的回答,我还想问一下的就是,我其实就是想捕捉到这个异常后判断一下他已经被修改就成了,这个如何用DBConcurrencyException判断呢?
      

  10.   

    这个,在MSDN那个示例的代码中,写得很清楚,你可以看看。
    ms-help://MS.MSDNQTR.2003FEB.2052/vbcon/html/vbwlkHandlingConcurrencyException.htm
    大体如下:
    引发该异常之后,即可确定这一行纪录发生了并发异常,你已经可以确定它已经被修改了。如果进一步要判断是被删除还是被修改,这样子:
    假如初始版本的关键字为“张三”
    捕获到并发异常之后,Select * From xx Where Pname=“张三”。
    得到数据库中当前版本。
      

  11.   

    这个,在MSDN那个示例的代码中,写得很清楚,你可以看看。
    ms-help://MS.MSDNQTR.2003FEB.2052/vbcon/html/vbwlkHandlingConcurrencyException.htm
    大体如下:
    引发该异常之后,即可确定这一行纪录发生了并发异常,你已经可以确定它已经被修改了。如果进一步要判断是被删除还是被修改,这样子:
    假如初始版本的关键字为“张三”
    捕获到并发异常之后,Select * From xx Where Pname=“张三”。
    得到数据库中当前版本。