热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

探讨SQLServer2005.NETCLR编程

本文将说明如何在SQLServer2005中以尽可能最简略的方法创立基于.NET的CLR子例程。本文重要针对在服务器端应用SQLServer2005的.NET开发者。一、创立SQLServer2005数据库这一节重要讨论创立

本文将说明如何在SQL Server 2005中以尽可能最简略的方法创立基于.NET的CLR子例程。本文重要针对在服务器端应用SQL Server 2005的.NET开发者。

一、创立SQL Server 2005数据库

这一节重要讨论创立一个将用于本文中的数据库和表格。详见下列步骤:

· 履行"Start->Programs->Microsoft SQL Server 2005->SQL Server Management Studio",并应用必要的证书连接到你的SQL Server 2005实例。

· 一旦建立连接,应用"Object Explorer"打开SQL Server 2005实例,然后右击"databases"并选择"New Database"(图1)。

图1

然后,呈现一个"New Database"对话框。输进数据库名"Sample"并点击"OK"以便在同一个实例内创立新的数据库。

· 一旦创立该数据库,你必定能够在"Object explorer"中看到雷同的成果。

· 应用"Object explorer"打开"Sample"数据库,右击"tables"并选择"new table"(图2)。

图2

· 创立如下图3所示的表格结构,并用"emp"保留表格。

图3

· 一旦你创立了表格"emp",打开它(图4)并应用下列数据进行填充(图5)。

图4

图5

二、创立SQL Server 2005数据库.NET CLR存储过程

一旦你创立完数据库和表格,接下来让我们应用下列步骤在SQL Server 2005数据库中创立一个.NET CLR存储过程:

· 转到"Start -> Programs -> Microsoft Visual Studio 2005 -> Microsoft Visual Studio 2005"。

· 在"New Project"对话框内,从"Visual Basic"树的"Project Type"下选择"database"并选择"SQL Server Project"作为模板,输进名字"SampleAllInOne"。至此,该对话框应当看起来如下图6所示。

图6

· 一旦你点击"OK",将呈现一个"New Database Reference"对话框。输进你自己的实例名,并选择数据库"Sample"(在上一节创立的),并且测试连接(图7)。

图7

· 一旦测试成功,点击"OK"创立工程。

· 然后系统呈现一个对话框,它询问你是否启动CLR调试功效。请点击"Yes"(图8)。

图8

· 应用"Solution explorer",右击"SampleAllInOne"工程,并点击"Add->Stored Procedure"(以创立一个新的存储过程)(图9)。

图9

· 之后,呈现"Add New Item"对话框。在该对话框内,选择"Stored Procedure"作为模板并输进名字"IncSalaries",最后点击"Add"(图10)。

图10

三、.NET CLR存储过程编码

一旦创立"IncSalaries.VB",以下列方法修正你的代码,如下所示:

以下为引用的内容:
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports Microsoft.SqlServer.Server
Partial Public Class StoredProcedures
_
Public Shared Sub IncSalaries(ByVal IncVal As SqlDouble)
 '在此添加你的代码
 Using cn As New SqlConnection("context cOnnection=true")
 Dim cmd As New SqlCommand("update sample.dbo.emp set
 sal = sal " & IncVal.ToString, cn)
 cmd.Connection.Open()
 cmd.ExecuteNonQuery()
 End Using
End Sub
End Class

上面是一个应用Visual Basic.NET 2005编写简略的基于CLR的存储过程,你可以把它宣布到SQL Server 2005中。该存储过程名为"IncSalaries",它只接收一个参数-"IncVal"。上面的存储过程简略地应用参数中供给的值来提高表格"emp"中每一位雇员的工资值。

四、.NET CLR存储过程测试

为了测试上面的存储过程,请遵守下列步骤:

· 应用"Solution Explorer"在"test scripts"中打开"test.sql"(图11)。

图11

· 转到最后一行,并如下修正代码:

--为运行你的工程,请编纂你的工程的Test.sql文件。

--这个文件位于Solution Explorer的"Test Scripts"文件夹下

exec IncSalaries 50

· 转到"Start->Programs->Microsoft SQL Server 2005->Configuration Tools->SQL Server Su***ce Area Configuration"。

· 在窗口内,点击"Su***ce Area Configuration for Features"(图12)。

图12

· 启动CLR集成,如下所示(图13)。

图13

· 按F5履行全部计划。假如它的履行中呈现任何错误,一切都会被显示于输出窗口中。

· 假如存储过程成功履行,你应当能够看到所有的工资数增加了50。

五、SQL Server 2005数据库中的.NET CLR用户定义函数

现在,我们要在我们现有的计划上添加一个存储函数。

· 应用"Solution explorer",右击"SampleAllInOne"工程并转到"Add->User-defined Function"(以创立一个新的存储函数)(图14)。

图14

· 之后,呈现"Add New Item"对话框。在对话框内,选择"User defined function"作为模板,输进名字"getNetSalary",最后点击"Add"(图15)。

图15

一旦创立"getNetSalary.VB",接下来按下列方法修正你的代码:

以下为引用的内容:
Imports System
Imports System.Data
Imports System.Data.SqlClient

推荐阅读
  • 深入分析十大PHP开发框架
    随着PHP技术的发展,各类开发框架层出不穷,成为了开发者们热议的话题。本文将详细介绍并对比十款主流的PHP开发框架,旨在帮助开发者根据自身需求选择最合适的工具。 ... [详细]
  • 本文介绍了一个基于 Java SpringMVC 和 SSM 框架的综合系统,涵盖了操作日志记录、文件管理、头像编辑、权限控制、以及多种技术集成如 Shiro、Redis 等,旨在提供一个高效且功能丰富的开发平台。 ... [详细]
  • 福克斯新闻数据库配置失误导致1300万条敏感记录泄露
    由于数据库配置错误,福克斯新闻暴露了一个58GB的未受保护数据库,其中包含约1300万条网络内容管理记录。任何互联网用户都可以访问这些数据,引发了严重的安全风险。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • 1.执行sqlsever存储过程,消息:SQLServer阻止了对组件“AdHocDistributedQueries”的STATEMENT“OpenRowsetOpenDatas ... [详细]
  • PostgreSQL 最新动态 —— 2022年4月6日
    了解 PostgreSQL 社区的最新进展和技术分享 ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • Shell脚本中变量操作详解
    本文基于《鸟哥的Linux私房菜》一书,详细介绍了Shell脚本中变量的使用方法,包括变量的赋值规则、字符串处理技巧以及环境变量的管理等,旨在帮助读者更好地理解和使用Shell中的变量。 ... [详细]
  • 探讨C#中如何正确访问静态成员,避免使用实例引用导致的错误。 ... [详细]
  • 本文探讨了在多种编程语言中实现Hello World输出的方法,从经典的C语言到现代的JavaScript,每种语言都有其独特的表达方式。 ... [详细]
author-avatar
mobiledu2502857827
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有