zoukankan      html  css  js  c++  java
  • 使用 Sql 2005 中集成CLR功能开发基于C#的应用

    在SQL 2005 中集成了CLR 运行库

    如果开发非图形界面的数据库应用可以考虑使用此功能。

    SQL2005 附带一个服务叫作业,我们可能很好的利用这个服务来实现我们的实时任务功能

    比如说系统会定时给库中的会员下发邮件。或者去定期处理话单 FTP

    首先我们不要图形界面,我们的业务逻辑必需有数据库的支持。但我们的业务只用SQL Server 存储过程又力不从心

    这个时候SQL CLR 是最好的选择!

    1.首先我们对数据库做修改,好能去安全执行业务

    --1打开数据库的TRUSTWORTHY安全属性
    ALTER DATABASE DNT2 SET TRUSTWORTHY ON
    go

    --2删除将创建的存储过程
    drop procedure testPro
    --3删除将创建的程序集
    drop assembly Test
    go

    --4创建一个程序集
    create assembly Test
    from 'c:\assembly\test.dll'
    with PERMISSION_SET = EXTERNAL_ACCESS
    go

    注意:在第四步的操作创建程序集,FROM 语句直接将 DLL 文件复制到SQL Server 的内存中然后去分析执行,语句执行完成后原始的DLL 文件可以直接删除

    --5创建存储过程
    create procedure testPro
    (
     @i int
    )
    as external name Test.[Test.MainX].ReaderHTML
    go

    注意:在第五步的操作创建存储过程中命名空间和类型名称类型必需用[]号括起来

    --测试存过程
    declare @i int
    execute @i = testPro 1

    以下为CS 的代码 生成选择直接用程序集

    /**********************************
    cs 代码
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Runtime.InteropServices;

    namespace Test
    {
        [ComVisible(true)]
        public class MainX
        {

         注意:在SQL 中运行的方法必需为静态,加上SqlProcedure属性标注
            [Microsoft.SqlServer.Server.SqlProcedure()]
            public static void ReaderHTML(int x)
            {
                return;

                using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("context connection=true"))
                {
                    System.Data.SqlClient.SqlCommand cmd = conn.CreateCommand();
                    cmd.CommandText = "SELECT [id],[displayorder],[type],[code],[url]  FROM [dnt_smilies]";
                    System.Data.IDataReader reader= cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        Microsoft.SqlServer.Server.SqlContext.Pipe.Send(reader.GetInt32(0).ToString());
                    }
                    reader.Close();
                }
            }
        }
    }
    **********************************/

  • 相关阅读:
    C++预备知识
    C++求最小公倍数
    c++编写函数,递归删除字符串中的子串,求删除次数
    ERROR 1452 : Cannot add or update a child row: a foreign key constraint fails
    django快速搭建blog
    北邮 北理 人大经验
    C、C++、Java语言中异常处理机制浅析
    学习git部署
    各种符号的使用情况说明以及区别
    【转】通过fio工具,测试SATA,SAS,SSD 读写性能
  • 原文地址:https://www.cnblogs.com/hznet/p/1805281.html
Copyright © 2011-2022 走看看