สคริปต์ที่ฉันเขียนเมื่อไม่กี่ปีก่อนสามารถแทนที่ข้อมูลในฐานข้อมูลทั้งหมดได้โดยอัตโนมัติ
ฉันแค่เขียนมันเพื่อความสนุกสนานในตอนแรก แต่ฉันไม่ได้คาดหวังว่าผู้คนจะถามเกี่ยวกับมันหลังจากที่ฉันเขียนมัน ดังนั้นฉันจึงเขียนโค้ดใหม่และปรับปรุงมัน รองรับการแทนที่ปกติ โดยหลีกเลี่ยงไบนารี (ออบเจ็กต์ ole) ที่จะทำให้เกิด เกิดข้อผิดพลาดและสร้างโปรแกรม EXE ขอบคุณสำหรับความช่วยเหลือเสมือน
รหัส asp ที่แนบมา:
คัดลอกรหัสดังนี้:<%
'###################################
'ชุดแทนที่เนื้อหาฐานข้อมูล 2008 -3-17
'การเปลี่ยนไม่สามารถย้อนกลับได้ ดังนั้นควรสำรองข้อมูลก่อนดำเนินการ
'############################## ### #
ดิ่ม 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)
ทำในขณะที่ไม่ใช่ Rs1.Eof
ถ้า UCase( Rs1(TABLE_TYPE))=TABLE จากนั้น 'หากเป็นตารางผู้ใช้ ให้ดำเนิน
การ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 'สำรวจเขตข้อมูลทั้งหมด
ถ้า Rs2(i).Properties(ISAUTOINCREMENT) = False และ Rs2(i).Type<>128 และ Rs2(i).Type<>204 และ Rs2(i).Type<>205 ดังนั้น 'ถ้าไม่ใช่ตัวเลขอัตโนมัติและไม่ใช่วัตถุ ole
Rs2(Rs2(i).name)=Myreplace(Rs2(i) ).value&)
สิ้นสุดถ้า
ถัดไป
Rs2.Movenext
Loop
Rs2.ปิด
ชุด Rs2=ไม่มีอะไร
สิ้นสุดถ้า
Rs1.MoveNext
Loop
Rs1.ปิด
ชุด Rs1=ไม่มีอะไร
Conn.ปิด
ชุด Conn=ไม่มีอะไร
ชุด Re=ไม่มีอะไร
ตอบสนอง เขียนการแทนที่
เสร็จสมบูรณ์ 'ฟังก์ชันการแทนที่แบบกำหนดเอง
ฟังก์ชัน myreplace(byval Tstr)
ถ้า Tstr= หรือเป็นโมฆะ (Tstr) จากนั้น
ออกจากฟังก์ชัน
Else
Re.Pattern=Str1
myReplace =Re.Replace(Tstr,Str2)
End If
End Function
% >