如何创建CLR对象
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍了如何创建CLR对象,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一 创建CLR对象1.在解决方案中添加新的C#SQL
千家信息网最后更新 2025年11月07日如何创建CLR对象
这篇文章主要介绍了如何创建CLR对象,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
一 创建CLR对象
1.在解决方案中添加新的C#SQL数据库项目,命名为"ServiceClient"
2.为你的目标数据库选择或添加注释。(如果未被提示:右击ServiceClient项目,选择属性,数据库,浏览并选择你的连接)
3.为创建的服务添加声明
1)在解决方案浏览器中右击"service"项目,选择"调试">"Start New Instance"
2)服务运行:右击"ServiceClient"项目,选择"Add Service Reference"
3)在"Service URI"中输入:http://localhost:8000/services
4)点击"OK"
二 CLR触发器案例
[Microsoft.SqlServer.Server.SqlTrigger(Name="Trigger1",Target="ERP_STOCKYaoHuoDingDan",Event="FORINSERT")] publicstaticvoidDingDanIDSameGongYingShangGUIDMustSame() { using(SqlConnectionconnection=newSqlConnection(@"contextconnection=true")) { connection.Open(); SqlCommandcommand=newSqlCommand(@"SELECTCOUNT(A.DingDanID)FROMERP_STOCKYaoHuoDingDanASA,INSERTEDASBWHEREA.DingDanID=B.DingDanIDANDA.GongYingShangGUID<>B.GongYingShangGUID",connection); inti=(int)command.ExecuteScalar(); if(i>0) { try { //如果要插入的记录不合法,则回滚. TransactionTransactiontrans=Transaction.Current; trans.Rollback(); } catch(SqlExceptionex) {当在触发器内部调用Transaction.Rollback方法时,将引发异常并显示不明确的错误消息,必须在try/catch块中包装此方法或命令。您会看到如下错误消息:
Msg6549,Level16,State1,Proceduretrig_InsertValidator,Line0A.NETFrameworkerroroccurredduringexecutionofuserdefinedroutineoraggregate 'trig_InsertValidator':System.Data.SqlClient.SqlException:Transactionisnotallowedtorollbackinsideauserdefinedroutine, triggeroraggregatebecausethetransactionisnotstartedinthatCLRlevel.Changeapplicationlogictoenforcestricttransactionnesting…Usertransaction,ifany,willberolledback. 此异常是预期行为,需要try/catch块才能继续执行代码。当完成执行触发器代码时,将引发另一个异常。 Msg3991,Level16,State1,Proceduretrig_InsertValidator,Line1Thecontexttransactionwhichwasactivebeforeenteringuserdefinedroutine, triggeroraggregate"trig_InsertValidator"hasbeenendedinsideofit,whichisnotallowed.Changeapplicationlogictoenforcestricttransactionnesting. Thestatementhasbeenterminated.此异常也是预期行为。 } } connection.Close(); } }
调用CLR触发器的例子
尽管引发了两个异常,仍可以回滚事务,并且更改不会提交到表中。
try { //用到此触发器的方法 } catch(SqlExceptionex) { if(ex.Number==3991) { LabelInfor.Text="同一张订单必须是同一家供应商。"; } } catch(Exceptionex) { }感谢你能够认真阅读完这篇文章,希望小编分享的"如何创建CLR对象"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
触发器
选择
篇文章
项目
对象
数据
数据库
代码
方案
方法
消息
行为
解决方案
错误
服务
浏览
一家
两个
中右
事务
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
昌吉云服务器服务保障
数据库原理的实验
平顶山软件开发厂家价格
pkl网络安全
数据库对程序员有什么作用
工行杭州软件开发中心 知乎
浪潮服务器硬盘蓝色灯亮
软件开发BS架构
服务器sql如何备份
网络技术对电脑配置要求
河北佳诚网络技术有限公司
虎门网络技术
网络技术背景视频
ios可以连接服务器吗
软件开发 岗位专业技能
公安部网络安全保卫局王爽
数据库查询空值语法
数据库快捷键无法更新
网络安全工作动员讲话
关系数据库的二元运算是什么
数据库行和列
地下城服务器价格
服务器ip切换
高科技与互联网公司的区别
服务器系统集成方案价钱
网站服务器防护
瀑布模型软件开发方法
一文搞懂mysql数据库
好的软件开发专业服务
数据库数据加一个数