电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

使用SQL Server 2005中的CLR集成

瀏覽:70日期:2023-10-30 18:08:15

“最近碰到點(diǎn)事”“啥”“想往數(shù)據(jù)庫(kù)連續(xù)的插入一批數(shù)據(jù)”“那就插啊,看你愁的”“可是沒辦法寫一個(gè)這樣的存儲(chǔ)過程啊。我不會(huì)sql的循環(huán),而且也不能分析字符串用split取值。又不能在程序中直接拼sql語(yǔ)句”“……”“怎么那么看著我啊”“你在用vs2005和sql2005?”“是啊”“來,整點(diǎn)新東西吧”……這個(gè)問題是前幾天遇到的,簡(jiǎn)單描述一下:?jiǎn)我徽n程和系列課程。一個(gè)系列包括多個(gè)單一課程。存放數(shù)據(jù)的表的設(shè)計(jì)為表:ES_RefSerailCourse列:SerialCourseID(int) | CourseID(int)一個(gè)SerialCourseID對(duì)應(yīng)多個(gè)CourseID。操作時(shí),創(chuàng)建系列,選擇多個(gè)課程到一個(gè)控件(該控件可以返回用','分隔的選擇的課程的編號(hào),點(diǎn)擊提交后創(chuàng)建系列,同時(shí)把生成的系列編號(hào)和課程編號(hào)插入到ES_RefSerailCourse。這種連續(xù)插入數(shù)據(jù)的問題,以前用vs2003+sql200的時(shí)候,我是在數(shù)據(jù)訪問層打開一個(gè)連接后,循化插入數(shù)據(jù),最后關(guān)閉連接。這個(gè)辦法雖然顯得很笨,但是當(dāng)時(shí)也沒有什么好辦法可以在數(shù)據(jù)庫(kù)邊完成循化插入數(shù)據(jù)。而現(xiàn)在,時(shí)代不同了,我們有了vs2005和sql2005,對(duì)于這種t-sql沒法完成的任務(wù),可以用sql2005的CLR集成功能實(shí)現(xiàn)。sql2005的CLR集成,說的通俗一些就是用.net語(yǔ)言編寫數(shù)據(jù)庫(kù)應(yīng)用,包括存儲(chǔ)過程,函數(shù),觸發(fā)器等等均可。其基本的使用過程為:1.在vs2005建立一個(gè)數(shù)據(jù)庫(kù)應(yīng)用項(xiàng)目。2.在該項(xiàng)目用.net語(yǔ)言編寫數(shù)據(jù)庫(kù)應(yīng)用。3.將用.net語(yǔ)言編寫數(shù)據(jù)庫(kù)應(yīng)用通過vs2005部署到sql2005。4.實(shí)際使用中調(diào)用。下面按照上面的順序講一下這個(gè)過程。(好久沒有寫技術(shù)文章了,如果有描述不清或錯(cuò)誤的地方,歡迎在評(píng)論中交流)

1.在vs2005建立一個(gè)數(shù)據(jù)庫(kù)應(yīng)用項(xiàng)目。

如圖所示,建立一個(gè)這樣的database項(xiàng)目。建立后會(huì)要求你指定一個(gè)數(shù)據(jù)庫(kù)連接,按照提示一步步進(jìn)行就ok。建立完成后可以測(cè)試一下數(shù)據(jù)庫(kù)連接。辦法為:在解決方案上點(diǎn)右鍵,選Deploy(中文應(yīng)該是部署?),如果狀態(tài)欄提示部署成功,那就ok了,否則請(qǐng)檢查一下數(shù)據(jù)庫(kù)連接(以及……人品)。

2.在該項(xiàng)目用.net語(yǔ)言編寫數(shù)據(jù)庫(kù)應(yīng)用。我用C#。這個(gè)過程和編寫普通的程序基本相同。下面是上面問題的解決程序

1 /// <summary>2 /// 將課程加入到系列3 /// </summary>4 /// <param name='serialID'>系列編號(hào)</param>5 /// <param name='ids'>課程編號(hào)匯總</param>6 /// <returns></returns>7 [Microsoft.SqlServer.Server.SqlProcedure]8 public static void up_AddCoursetoSerial(SqlInt32 serialID, SqlString ids)9 {10;;using (SqlConnection connection = new SqlConnection('context connection=true'))11;;{12 connection.Open();13 System.Text.StringBuilder sqlb=new System.Text.StringBuilder();14 string[] courseIds = ids.Value.Split(new char[] { ',' });15 foreach (string courseId in courseIds)16 {17;;if (courseId.Length > 0)18;;{19 sqlb.AppendFormat('insert into [ES_RefSerailCourse] values({0},{1}) ;', serialID, courseId);20;;}21 }22 command = new SqlCommand(sqlb.ToString(), connection);23 SqlContext.Pipe.ExecuteAndSend(command);24;;}25 }

a .在方法上加attribute,是什么就加什么。具體可以查SDK文檔。這樣在編譯和部署的時(shí)候vs2005就會(huì)按照你的意思來做了。b.暴露在外的數(shù)據(jù)需要使用System.Data.SqlTypes。這是自然的。c.構(gòu)造完command后,使用SqlContext.Pipe.ExecuteAndSend()執(zhí)行。(實(shí)際上,我們還是拼了sql語(yǔ)句,但最后的表現(xiàn)形式卻成了一個(gè)存儲(chǔ)過程。大部分的項(xiàng)目都不允許直接把sql語(yǔ)句寫到程序中,所以,這個(gè)辦法就有了用武之地。)

3.將用.net語(yǔ)言編寫數(shù)據(jù)庫(kù)應(yīng)用通過vs2005部署到sql2005。完成上面的工作后,對(duì)項(xiàng)目進(jìn)行編譯,部署,方法是在解決方案上點(diǎn)右鍵,選...... 這個(gè)的結(jié)果是vs2005在sql2005中生成了一個(gè)存儲(chǔ)過程。接下來就可以到sql2005的存儲(chǔ)過程管理部分看一下是否多了一個(gè)名字叫“up_AddCoursetoSerial”的,如果存在,那恭喜你,一切都很完美。

4.實(shí)際使用中調(diào)用。到這一步,就忘記這是一個(gè)用.net語(yǔ)言寫的存儲(chǔ)過程吧,該怎么用就怎么用。下面是我的實(shí)際應(yīng)用:

1 ALTER PROC [dbo].[ES_SerialRecordCourse_Insert]2; (3; @SerialCourseID;int out,4; @SerialCourseName;nvarchar(100),5; @Description;nvarchar(200),6 @IDs nvarchar(500)7; )8 AS9 INSERT INTO [ES_SerialRecordCourse]10; (11; [SerialCourseName],12; [Description]13; )14 VALUES15; (16; @SerialCourseName,17; @Description18; )19 SET @SerialCourseID=@@IDENTITY20 21 --向 系列_課程對(duì)應(yīng)表 插入數(shù)據(jù)22 exec dbo.up_AddCoursetoSerial @SerialCourseID,@IDs23

最后一句就是調(diào)用了我們剛才寫的存儲(chǔ)過程,接受兩個(gè)參數(shù)。是不是很方便?

看到這里,相信聰明的你已經(jīng)對(duì)sql2005的CLR集成有了初步的印象。如果想完全掌握這個(gè)強(qiáng)大的武器,最好的辦法就是立刻開始自己的編寫。在之前,看看msdn上對(duì)這個(gè)的介紹也會(huì)很有幫助http://www.microsoft.com/china/msdn/library/data/sqlserver/sqlclrguidance.mspx我也是前幾天因?yàn)轫?xiàng)目需要才接觸這個(gè),希望可以和大家一起來學(xué)這個(gè)很酷的新功能:)

好了,我的最新的一篇筆記完成了!和前一篇筆記相隔的時(shí)間大概是……一年??but,better later than never :)

鏈接地址: http://notus.cnblogs.com/archive/2006/07/13/450008.html

主站蜘蛛池模板: 水平垂直燃烧试验仪-灼热丝试验仪-漏电起痕试验仪-针焰试验仪-塑料材料燃烧检测设备-IP防水试验机 | 定硫仪,量热仪,工业分析仪,马弗炉,煤炭化验设备厂家,煤质化验仪器,焦炭化验设备鹤壁大德煤质工业分析仪,氟氯测定仪 | 亳州网络公司 - 亳州网站制作 - 亳州网站建设 - 亳州易天科技 | 安驭邦官网-双向万能直角铣头,加工中心侧铣头,角度头[厂家直销] 闸阀_截止阀_止回阀「生产厂家」-上海卡比阀门有限公司 | 超声波分散机-均质机-萃取仪-超声波涂料分散设备-杭州精浩 | 中国品牌排名投票_十大品牌榜单_中国著名品牌【中国品牌榜】 | 厂房出租-厂房规划-食品技术-厂房设计-厂房装修-建筑施工-设备供应-设备求购-龙爪豆食品行业平台 | 代理记账_免费注册公司_营业执照代办_资质代办-【乐财汇】 | 北京开业庆典策划-年会活动策划公司-舞龙舞狮团大鼓表演-北京盛乾龙狮鼓乐礼仪庆典策划公司 | 不锈钢闸阀_球阀_蝶阀_止回阀_调节阀_截止阀-可拉伐阀门(上海)有限公司 | 大流量卧式砂磨机_强力分散机_双行星双动力混合机_同心双轴搅拌机-莱州市龙跃化工机械有限公司 | sus630/303cu不锈钢棒,440C/430F/17-4ph不锈钢研磨棒-江苏德镍金属科技有限公司 | 杭州火蝠电商_京东代运营_拼多多全托管代运营【天猫代运营】 | 垃圾压缩设备_垃圾处理设备_智能移动式垃圾压缩设备--山东明莱环保设备有限公司 | 无纺布包装机|径向缠绕包装机|缠绕膜打包机-上海晏陵智能设备有限公司 | 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | 大连海岛旅游网>>大连旅游,大连海岛游,旅游景点攻略,海岛旅游官网 | 车辆定位管理系统_汽车GPS系统_车载北斗系统 - 朗致物联 | 棕刚玉-白刚玉厂家价格_巩义市东翔净水材料厂 | 合肥抖音SEO网站优化-网站建设-网络推广营销公司-百度爱采购-安徽企匠科技 | 精密光学实验平台-红外粉末压片机模具-天津博君 | 药品仓库用除湿机-变电站用防爆空调-油漆房用防爆空调-杭州特奥环保科技有限公司 | 不锈钢复合板厂家_钛钢复合板批发_铜铝复合板供应-威海泓方金属复合材料股份有限公司 | 留学生辅导网-在线课程论文辅导-留学生挂科申诉机构 | 包装盒厂家_纸盒印刷_礼品盒定制-济南恒印包装有限公司 | 软文发布平台 - 云软媒网络软文直编发布营销推广平台 | 罗氏牛血清白蛋白,罗氏己糖激酶-上海嵘崴达实业有限公司 | 螺杆式冷水机-低温冷水机厂家-冷冻机-风冷式-水冷式冷水机-上海祝松机械有限公司 | 智能气瓶柜(大型气瓶储存柜)百科 | 污水处理设备,一体化泵站,一体化净水设备-「梦之洁环保设备厂家」 | 印刷人才网 印刷、包装、造纸,中国80%的印刷企业人才招聘选印刷人才网! | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 超声骨密度仪-骨密度检测仪-经颅多普勒-tcd仪_南京科进实业有限公司 | 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 爆破器材运输车|烟花爆竹运输车|1-9类危险品厢式运输车|湖北江南专用特种汽车有限公司 | 明渠式紫外线杀菌器-紫外线消毒器厂家-定州市优威环保 | 无线讲解器-导游讲解器-自助讲解器-分区讲解系统 品牌生产厂家[鹰米讲解-合肥市徽马信息科技有限公司] | 江苏皓越真空设备有限公司| 除甲醛公司-甲醛检测治理-杭州创绿家环保科技有限公司-室内空气净化十大品牌 | 刑事律师_深圳著名刑事辩护律师_王平聚【清华博士|刑法教授】 | 杭州用友|用友软件|用友财务软件|用友ERP系统--杭州协友软件官网 |