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

  当初只是为了玩玩写的,没想到写了之后不断有人询问,所以改写了一下代码,完善了一下,支持了正则替换,避开了会导致出错的二进制(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

  %>