资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 编程开发 >
Advertisement
文章正文

SQL Server 2005与IBM DB2 v8.2之对比——Visual Studio和.NET开发人员的数据库平台(二) _编程

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   
  • 构建以数据为中心的应用程序 
  • 面向 Visual Basic开发人员的 Microsoft .NET Framework 
  • 使用ASP.NET2.0改进 Starter Kit  
  • 体验VS.NET 2005的winform新功能 
  • VS 2005 文本编码小技巧 
  • 发现了VS.NET 2005的一个小BUG 
  • 在 Microsoft Visual Studio Team System 和 Microsoft Visual SourceSafe 之间选择 
  • Team Foundation Server Beta3 安装指南 1 
  • Visual Studio 2005 Team System:概述 
  • Visual Studio 2005 Team System:企业级源代码管理和工作项跟踪 
  • 页面导航:

    正文内容:
    sql server 2005 clr存储过程 使用clr数据库对象最大的优势就在于能够访问到数据库外部的资源。标准sql和t-sql语句能够获取和操作关系型数据,但它们不能够访问数据库外部的系统资源,例如文件系统或是注册表。clr存储过程(或者是其他用.net代码编写的服务器端对象)能够完全地访问.net框架。因此,它们不但能访问数据库引擎中的关系型数据,还能访问外部的资源。下表显示了一个用c#编写的范例存储过程,此存储过程被命名为“usp_readtextfile”,它的功能是从存于文件系统中的某文本文件中读取数据然后将其转换成sqlstring的数据类型返回。  

    using system;

     

     

     

     

    using system.data;

     

     

     

     

    using system.data.sql;

     

     

     

     

    using system.data.sqlserver;

     

     

     

     

    using system.data.sqltypes;

     

     

     

     

    using system.io;

     

     

     

     

    public partial class storedprocedures

     

     

     

     

    {

     

     

     

     

    [sqlprocedure]

     

     

     

     

    public static void usp_readtextfile(string sinputfile,

     

     

     

     

    out sqlstring scolumn)

     

     

     

     

    {

     

     

     

     

    string strcontents;

     

     

     

     

    scolumn = "";

     

     

     

     

    try

     

     

     

     

    {

     

     

     

     

    streamreader strreader = new streamreader(sinputfile);

     

     

     

     

    strcontents = strreader.readtoend();

     

     

     

     

    strreader.close();

     

     

     

     

    scolumn = strcontents;

     

     

     

     

    }

     

     

     

     

    catch (exception ex)

     

     

     

     

    {

     

     

     

     

    sqlpipe sp = sqlcontext.getpipe();

     

     

     

     

    sp.send(ex.message);

     

     

     

     

    }

     

     

     

     

    }

     

     

     

     

    }

    首先,我们检查一下using语句。这些语句使得程序在调用sql server .net数据提供程序的命名空间中的类时,无需使用全名来引用。sql server .net数据提供程序(在命名空间system.data.sqlserver中)是用来连接sql server系统的。

     

     

     

     

     

     

     

     

    接着,我们注意一下位于方法名称前面的[sqlprocedure]属性。这个属性的存在就告诉了.net编译器和运行库这个方法将作为sql server存储过程使用。另外,你还会发现这个类的默认名称被设置为“storedprocedures”。在这个类中包含了一个名为usp_readtextfile的静态方法,因为在此使用的是c#,所以这个方法必须被定义为静态的,如果你使用的是visual basic,这个方法就应该被定义为shared。usp_readtextfile方法接收两个参数。第一个参数是输入参数,用于传递操作系统的文件名称;第二个参数是输出参数(用out关键字标志),这个参数将以sqlstring数据类型的形式把文本文件的内容返回给调用者,sqlstring数据类型与t-sql varchar数据类型相对应。

     

     

     

     

     

     

     

     

    考虑到有些读者可能不能读懂c#代码,我们在这先对这段代码的结构做个简要地描述:这段代码先打开一个文本文件,然后读取它的内容,接着将内容放到sqlstring类型的输出变量中输出。在这个存储过程代码开始部分,先声明了一个string类型的变量用来存放文本文件的内容。接着,在try-catch结构中读取文件的内容,首先,创建了一个名为strreader的streamreader类型的对象并将包含在sinputfile变量中的输入文件名传递给它,接着利用streamreader的readtoend方法读取输入文件的全部内容并将其存入strcontents变量中。在文件内容读取完毕以后,关闭streamreader对象并将文件内容移至名为scolumn的输出变量中。

     

     

     

     

     

     

     

     

    如果在读取文件内容的过程中发生了错误,catch模块中的代码将被执行。在catch模块中,利用了一个sqlpipe类型的对象实例将错误信息传送给这个存储过程的调用者。首先,利用sqlcontext.getpipe方法创建了一个sqlpipe类型的对象实例,然后使用sqlpipe对象的send方法将exception对象实例ex的message属性的内容传送给调用存储过程usp_readtextfile的程序。

     

     

     

     

     

     

     

     

    要将这个存储过程部署到sql server中,需要两个步骤:编译和安装。开发人员可以自己完成这些步骤,先将相应的dll程序集移至合适的位置,再运行相应的sql server命令;或者他可以使用visual studio自动地完成这些工作。如果要自己去做,首先先将编译得到的dll程序集拷贝到sql server能够访问到的文件系统中,然后先后运行create assemby和create procedure命令。然而,如果你是使用visual studio 2005来开发的,你仅仅需要先后选择“生成”和“部署解决方案”两个菜单选项就能将上述的clr存储过程安装到sql server数据库中。在下一个部分中,我们将给读者展现使用visual studio 2005构建和部署clr存储过程usp_readtextfile的具体步骤。

    使用sql servervisual studio 2005构建存储过程

     

     

     

     

    下面的表格中概括了使用visual studio 2005结合sql server 2005创建和部署一个clr存储过程的所需步骤。

     

     

     

     

     

     

     

     

    开发流程概述

     

     

     

     

    步骤         简要说明         所用工具         1         创建新的visual studio sql server项目         visual studio 2005文件菜单         2         创建数据库连接         sql server项目模板         3         添加存储过程         存储过程项目模板         4         生成项目         visual studio 2005生成菜单         5         部署项目         visual studio 2005生成菜单         总共5步                        

     

     

     

     

    集成工具

     

     

     

     

    要使用visual studio 2005创建clr存储过程,你得首先创建一个sql server项目。打开visual studio 2005,选择“file”*“new project”,然后就会跳出“new project”对话框,在这个对话框中,你从已经安装的visual studio模板列表中选择sql server项目并给其命名。在这里所设定的名称将作为相应visual studio解决方案的名称,同时也是未来经过编译得到的程序集的名称。如果在你的项目中仅仅只包含一个存储过程,它也可以作为这个存储过程的名称,当然,如果你希望你的项目中包含多个存储过程或者还有其他类型的clr数据库对象,你完全可以为其指定其他的名称。 如图6所示,点击“ok”按钮就会在visual studio 2005 ide中创建一个新的sql server项目,同时,sql server项目模板会自动提示你设置sql server 2005数据库连接信息,visual studio将使用这里设置的连接信息来调试和部署你的解决方案。典型的用法是,最初这里设定的目标是用于开发的数据库;当经过测试和质量评价以后,相应的.net项目就能被部署到生产环境中的sql server实例。 图7——设置sql server项目的数据库连接属性

    在“connection properties”对话框中,你可以在“select or enter a server name”下拉框中输入你的目标sql server实例名称。如果在你的开发环境中注册了多个sql server实例,当你点击下拉箭头时,所有已注册的实例名称都会被列出。如果你的目标系统不在下拉列表中,你也可以在下拉框中输入相应的实例名称或者是ip地址。

     

     

     

     

     

     

     

     

    选择好目标实例之后,你接下来需要选择用来连接这个sql server实例的身份验证模式。选择“windows nt integrated security”,系统会把你在windows中使用的用户名和密码传递给sql server用以验证并连接。如果你的目标实例没有采用集成验证模式,你也可以在“user id”和“password”两个文本框中提供用以连接目标实例的用户信息。

     

     

     

     

    接下来,选择将作为部署目标的数据库。点击下拉框,会显示所有你有权限访问的数据库。当然,这里供你选择的数据库都已经存在于sql server中了。

     

     

     

     

     

     

     

     

    当你输入了所有必要的连接信息后,你可以点击“test connection”按钮来测试一下连接。如果所有的连接信息都是有效的,将会显示“successful connection”消息,否则你必须更正连接信息。点击“ok”按钮后,连接信息就会被写入visual studio项目中并出现visual studio ide界面。由于连接信息是一直存于项目中的,所以最好使用集成安全,因为它并不存储实际的登录信息。如果你是显示地提供了用户名和密码,那你要保证你的项目的存储位置是安全的。 图8——新建的sql server项目

    刚刚建立的sql server项目最初是一个空的解决方案。在“solution explorer”中,所显示的项目名称就是在“new project”对话框中设置的。另外,适当的引用文件会被自动地添加到项目中。我们特别注意一下sqlaccess引用,它是包含sql server .net provider的系统dll,也就是说,它是我们创建和运行.net数据库对象所必需的。

     

     

     

     

     

     

     

     

    要在visual studio 2005中创建一个clr存储过程,选择visual studio 2005的“project”*“add stored procedure”。

    图9——添加clr存储过程

     

     

     

     

     

     

     

     

    在图9中,你能再次领略到sql server和visual studio 2005集成的紧密程度。在visual studio的“project”菜单项中包含了创建各种.net数据库对象的选项。另外,你也可以右击“solution explorer”窗口中的项目名称,选择“add item”选项,这同样会出现创建各种.net数据库对象的选项。无论哪种情况,接着都会显示如图10所示的“add new item”对话框。 图10——选择存储过程模板

     

     
    热门推荐笔记本: 神舟笔记本
    相关文章:
    webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
    ©2007 popbb.net All Rights Reserved