用SQL语句写一个加密函数,批量update...这么多数据游标更不可行

解决方案 »

  1.   

    用SQL 语句写加密函数啊?没听说过,加密算法很复杂的,用SQL语句实现起来可行否?比如DES。而且加密算法我已经在程序中写好了。。
      

  2.   

    游标在这里很不合适,而且ado.net也不能遍历游标,如果加密算法无法用sql实现也可以用c#写,然后添加到sqlserver中。
      

  3.   

    我就是想怎么把用C#写好的加密算法添加到SQL中去啊 ? 在SQL中能调用C#方法?还是需要怎么转换什么的?能用c#写,然后添加到sqlserver中,这样最好不过了,请问怎么添加进去啊?
      

  4.   

    自己用c#写个clr加密函数,布署到sqlserver中,然后一条语句就可以解决了。效率应该是比较高的。
      

  5.   

    加密写成DLL在SQL中注册成扩展过程
      

  6.   

    我开始想如果能在SQL直接调用C#中的加密算法就太好了。还以为不行啊,原来还真可以。那位大哥说详细点啊,我是个新手?不是很懂,提供点方向或资料。
      

  7.   


    打开vs2005/2008,新建项目,选择其它,然后选择数据库项目,接下来让你连接到sqlserver数据源,指定后,写clr的sql function就可以了。
      

  8.   

    类似代码using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Data.SqlTypes;
    using Microsoft.SqlServer.Server;public partial class UserDefinedFunctions
    {
        [Microsoft.SqlServer.Server.SqlFunction]
        public static SqlString Function1(SqlString value)
        {
            // 在此处放置代码
            return new SqlString("加密"+(value.IsNull?"": value.Value));
        }
    };
      

  9.   

    大哥,能不能再详细点呀?不是说可以将写好的C#代码添加进去吗? 还要写SQL代码? 比如有一个加密类,怎么添加进去啊,你能不能举个例子!
    谢谢了。
      

  10.   

    上面我问的10楼说的是什么意思啊?
    12楼的写出来明白多了,但问一下怎么在SQL语句中调用他们进行更新啊??
      

  11.   

    下面给你一个实例步骤:此实例,创建clr函数,将输入的字串转换为大写(当然,在t-sql中用一个upper函数就出来了,这里仅为了演示步骤)新建项目>visual c#>数据库>sql server项目选择数据源(这里我选择是.\sqlexpress实例下的test库)>确定>选择启用clr调试右击项目名>新建>用户自定义函数>名为 function1using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Data.SqlTypes;
    using Microsoft.SqlServer.Server;public partial class UserDefinedFunctions
    {
        [Microsoft.SqlServer.Server.SqlFunction]
        public static SqlString Function1(string str)
        {
            // 在此处放置代码
            return str.ToUpper();
        }
    };
    右击项目文件,点“生成”,这时编译 通过, 然后点“布署 ”,则会自动将些函数发布到指定的数据源。打开sqlserver management studio,连到.\sqlexpress,展开test库,可编程性》自定义存储过程,发现有了 function1测试select dbo.function1('aa')/*
    AA
    */这仅仅是一个简单的例子。 你把函数体换成加密的步骤即可。
      

  12.   

    如果你的加密类是个dll,那么在此项目中引用你的加密dll, 在function1.cs里引用它,然后调用即可。如果是个加密class.cs,那么在项目里增加现有项,同样的function1.cs里引用它,调用加密方法即可。
    这都是c#的问题了,不用我多说了吧。
      

  13.   

    你既然已经用c#写出来没有问题了,就不用调试了,编译后添加到sql中http://blog.csdn.net/jinjazz/archive/2008/12/05/3455854.aspx
      

  14.   

    刚刚截了几张图,贴到了blog上,你可以看看应该明白,比如下面的
      

  15.   

    sql 2005需要启用clrexec sp_configure 'show advanced options', '1';
    go
    reconfigure;
    go
    exec sp_configure 'clr enabled', '1'
    go
    reconfigure;
    exec sp_configure 'show advanced options', '1';
    go
      

  16.   

    顺便问一下,这个只能在MSSQL 2005中用啊? 如果是MSSQL 2000,那咋整啊?
      

  17.   

    sql2000中
    1,用t-sql写加密函数
    2,写自定义函数用用sp_oa系列调用外部加密类com
    3,用sp_addextendedproc注册扩展存储过程
    4,走弯路,提供webservice进行加密,写自定义函数用sp_oa系列存储过程调用webservice进行加密码
    5,其它方式
      

  18.   

    sql2000没有用c#写过,给你一个delphi的参考,因为太麻烦,实际工作中我也不会考虑在2000中使用的
    http://blog.csdn.net/jinjazz/archive/2007/12/09/1926086.aspx