欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

asp+Access通用的自动替换数据库中的字符串

程序员文章站 2022-07-01 23:37:03
当初只是为了玩玩写的,没想到写了之后不断有人询问,所以改写了一下代码,完善了一下,支持了正则替换,避开了会导致出错的二进制(ole对象),并且做了一个exe的程序。感谢虚拟...

当初只是为了玩玩写的,没想到写了之后不断有人询问,所以改写了一下代码,完善了一下,支持了正则替换,避开了会导致出错的二进制(ole对象),并且做了一个exe的程序。感谢虚拟帮忙。
附asp代码:

复制代码 代码如下:

<%    
'####################################    
'批量替换数据库内容2008-3-17     
'替换是不可逆的,所以操作前做好能备份    
'####################################    
dim db,conn,rs1,rs2,str1,str2,i,re    
str1="admi[0-z]" '要替换的字符串,支持正则    
str2="1234" '替换为的字符串    
db="db.mdb" '数据库地址    
'以下无需改动    
'创建正则对象    
set re=new regexp    
    re.ignorecase =true   
    re.global=true   
set conn=server.createobject("adodb.connection")    
    conn.open "provider=microsoft.jet.oledb.4.0;data source="&server.mappath(db)    
set rs1 = conn.openschema(20)    
    do while not rs1.eof    
        if ucase(rs1("table_type"))="table" then '如果是用户表,则进行操作    
          set rs2=server.createobject("adodb.recordset")    
              rs2.open "select * from ["&rs1("table_name")"]",conn,1,3    
              do while not rs2.eof    
                for i=0 to rs2.fields.count-1 '遍历所有字段    
                    if rs2(i).properties("isautoincrement") = false and rs2(i).type<>128 and rs2(i).type<>204 and rs2(i).type<>205 then '如果非自动编号并且非ole对象    
                        rs2(rs2(i).name)=myreplace(rs2(i).value&"")    
                    end if   
                next   
             rs2.movenext    
             loop   
        rs2.close    
        set rs2=nothing    
        end if   
    rs1.movenext    
    loop   
rs1.close    
set rs1=nothing   
conn.close    
set conn=nothing   
set re=nothing   
response.write "替换完成"   

'自定义的替换函数    
function myreplace(byval tstr)    
if tstr="" or isnull(tstr) then     
 exit function   
else   
    re.pattern=str1    
    myreplace =re.replace(tstr,str2)    
end if   
end function   
%>