sql server中调用c#写的dll里的方法

摘要:
最近,有一个项目:一个独立版本的超市管理系统,运行在WIN2003+SQL2005上。每天超市关门时,电脑都会关闭。现在,顾客想要添加新功能。每天下班回家,他们都可以在线查看超市管理系统数据库中的相关数据,然后做一些原始系统没有的统计分析。旧系统不能进行大的更改,例如升级到WIN2012+SQL2012。更改越小越好。目前的想法是:阿里云购买一台服务器,安装SQL,然后创建一个与超市管理系统上的数据库几乎相同的数据库,

最近有一项目:

 一超市管理系统单机版,运行在WIN2003+SQL2005上,每天超市关门都都会关电脑,现客户要新加功能,每天关门下班后回家可以上网查看超市管理系统的数据库里的相关数据,然后再做一些原系统没有的统计分析等,老系统不能做大改动,像升级到WIN2012+SQL2012等这些操作,改动越小越好。

现在的想法是:阿里云买台服务器,装上SQL,然后建立的数据库和超市管理系统上的数据库一毛一样,然后想办法,当超市管理系统数据库里的增表增删改的时候,同步阿里云服务器上的数据库保持数据一致,

然后剩下的就是做自己的网站连接阿里云上的数据库做统计分析就好了

上网到处问网友,以前的技术经理给了如下方案:


 
using System.Text.RegularExpressions;

namespace MSSQLExtMethod
{
    public class RegexExtends
    {
        [Microsoft.SqlServer.Server.SqlFunction]
        public static bool IsMath(string input, string patten)
        {
            return !string.IsNullOrEmpty(input) && new Regex(patten).IsMatch(input);
        }
        [Microsoft.SqlServer.Server.SqlFunction]
        public static string Math(string input, string patten)
        {
            return string.IsNullOrEmpty(input) ? "" : new Regex(patten).Match(input).Value;
        }
        [Microsoft.SqlServer.Server.SqlFunction]
        public static string Replace(string input, string patten, string replace)
        {
            return string.IsNullOrEmpty(input) ? "" : new Regex(patten).Replace(input, replace);
        }
    }
}

-------------------------------------------------

create assembly Regex from 'E:TestLibsMSSQLExtMethod.RegexMSSQLExtMethod.RegexinDebugMSSQLExtMethod.Regex.dll' with permission_set = SAFE

exec sp_configure 'clr enabled',1
RECONFIGURE

create function [dbo].[Regex.Math](@Input nvarchar(max),@Regex nvarchar(max))
returns nvarchar(max) with execute as caller
as
external NAME [Regex].[MSSQLExtMethod.RegexExtends].[Math]
go

create function [dbo].[Regex.Replace](@Input nvarchar(max),@Regex nvarchar(max),@Replace nvarchar(max))
returns nvarchar(max) with execute as caller
as
external NAME [Regex].[MSSQLExtMethod.RegexExtends].[Replace]
go

create function [dbo].[Regex.IsMath](@Input nvarchar(max),@Regex nvarchar(max))
returns bit with execute as caller
as
external NAME [Regex].[MSSQLExtMethod.RegexExtends].[IsMath]
go

------------------------------------------------------------------

declare
    @regex nvarchar(500)
    ,@replace nvarchar(500)
    ,@input nvarchar(500)
    ,@regex2 nvarchar(500)
    ,@input2 nvarchar(500)


select @regex = '^(1[3456789][0-9])[0-9]{4}([0-9]{4})$'
,@input = '13912345678'
,@replace = '$1****$2'

select @regex2='1[3456789][0-9]{6}'
,@input2='13100000000,13922222222'

select dbo.[Regex.Replace](@input,@regex,@replace)
select dbo.[Regex.Math](@input2,@regex2)
select dbo.[Regex.IsMath](@input2,@regex2)




第一块代码,.net 类库,第二块代码类库注册到 MSSQL 中形成函数,第三块代码调用实例

今天自己测试了一下,发现只有.NET 2.0的DLL才可以,开始我是.NET 4.0的,总是报那个什么什么权限错误之类的。。


这样只要在SQL2005的表中加个触发器,有数据变动的时候就调用DLL里的方法访问远程接口进行增删改远程数据库就好了


另SQL非免费版里好像有个‘镜像’功能,和一个‘复制’功能,不知道能不能用,没有学过的。。。


自己在VS2W017中做的.NET 2.0的DLL示例方法的源码:

http://ohpxbzczu.bkt.clouddn.com/SQL2005ExecDLLDemo.zip

免责声明:文章转载自《sql server中调用c#写的dll里的方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Unity基础知识分享一个单机软件试用期计时思路下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

md5加密

package cn.easybuy.utils; import org.apache.commons.codec.digest.DigestUtils; public class SecurityUtils { /*** md5加密** @param value 要加密的值* @return md5加密后的值*/public static String...

Spring中RestTemplate的使用方法

一、REST 在互联网中,我们会通过请求url来对网络上的资源做增删改查等动作,这里的请求包含两部分:动词,主要包括增、删、改、查;名词,就是网络中的各种资源。传统的非REST风格的请求方式是把动词和名词全都放在url中。例如,对设备的操作可能是这样的:添加设备:http://test/device/add删除设备:http://test/device/d...

SQL数据库面试题

Database工程师面试 问题描述:为管理岗位业务培训信息,建立3个表:S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄C (C#,CN ) C#,CN 分别代表课程编号、课程名称SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩要求实现如下5个处理:1. 使用标准SQ...

菜鸟python---格式化

"""-----------info----------姓名:年龄:公司:电话:------------end-----------"""name = input("name:")age = input("age:")addr = input("addr:")phone = input("phone:")a = "-----------info------...

(八)Asp.NET中三层架构的应用

一、 什么是三层架构? 生活中的三层 初始结构: 在现实生活中,如果老王开了一家饭店,前期顾客比较少,自己来招待客人、在后厨炒菜、每天去市场采购食材。但是随着顾客量的增加,饭店的生意越来越兴隆,自己一个人单干忙的不可开交。就好比我们的软件系统一样,我们的用户是浏览我们的网页的,主要的功能是体现在UI层面,用户和系统产生交互,UI层面需要接收用户的数据信...

表单input按钮在各浏览器之间的兼容性

从网上看了这篇关于表单input按钮的浏览器兼容性问题,总结的还不错,所以copy下来学习下。 input按钮在各个浏览器之间的兼容性问题,看下边这段代码: input.item { background: #4D90FE; border: 1px solid #4D90BB; color: white; } <input type="submit"...