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
%>