الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

شرح: طريقة استعادة نسخة احتياطية الى قاعدة البيانات

بدأه BigMove في 20 يوليو 2008 · 0 رد · 2,344 مشاهدة · في JavaEE
مشاركة: واتساب X فيسبوك تيليجرام
#1

بسم الله الرحمن الرحيم

*هذا الموضوع مجرد فكرة خطرت على بالي واحببت مشاركتها مع الجميع

قبل البت في الموضوع الرجاء قراءة موضوعي السابق

شرح: طريقة اخذ نسخة احتياطية من قاعدة البيانات

طريقة استعادة نسخة احتياطية مأخوذة مسبقا من قاعدة بيانات MySql

في البداية يجب توفر ملف النسخة الاحتياطية -sql- الذي ينتج من صفحة الـ JSP في الموضوع السابق

نحتاج الى صفحة html و صفحة jsp

الأولى باسم index.html

تحتوي على نموذج ادخال (Form) يحولك الى الصفحة الثانية

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256" />
<title>Untitled Document</title>
</head>

<body>
<form name="myform" action="active.jsp"
 method="post" enctype="multipart/form-data">
	Specify your File:<br />
	  <input type="file" name="myfile"><br /><br />
	<input type="submit" name="Submit" value="Restore"/>
	</form>
</body>
</html>

الصفحة الثانية باسم active.jsp

<%@ page import="java.sql.*, java.io.*, java.util.Date, java.util.StringTokenizer" %>
<%
String contentType = request.getContentType();
System.out.println("Content type is :: " +contentType);
if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0))
{
DataInputStream in = new DataInputStream(request.getInputStream());
int formDataLength = request.getContentLength();
byte dataBytes[] = new byte[formDataLength];
int byteRead = 0;
int totalBytesRead = 0;
while (totalBytesRead < formDataLength)
{
byteRead = in.read(dataBytes, totalBytesRead, formDataLength);
totalBytesRead += byteRead;
}
String file = new String(dataBytes);
String saveFile = file.substring(file.indexOf("filename=\"") + 10);
saveFile = saveFile.substring(0, saveFile.indexOf("\n"));
saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1,saveFile.indexOf("\""));
String theName = saveFile;
String filename=saveFile.substring(0,saveFile.lastIndexOf("."));
String extension = saveFile.substring(saveFile.lastIndexOf(".")+1,saveFile.length());
if(extension.toLowerCase().equals("sql")){
int lastIndex = contentType.lastIndexOf("=");
String boundary = contentType.substring(lastIndex + 1,contentType.length());
int pos;
pos = file.indexOf("filename=\"");
pos = file.indexOf("\n", pos) + 1;
pos = file.indexOf("\n", pos) + 1;
pos = file.indexOf("\n", pos) + 1;
int boundaryLocation = file.indexOf(boundary, pos) - 4;
int startPos = ((file.substring(0, pos)).getBytes()).length;
int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;
String theData = file.substring(file.lastIndexOf(theName)+theName.length()+5,endPos);
StringTokenizer st = new StringTokenizer(theData,";");
int tokens = st.countTokens();
String[] array=new String[tokens];
for(int lop=0;lop<tokens;lop++) {
	array[lop]=st.nextToken()+";";
}
//////////////////////DataBase
String dburl="localhost"; //MySql Url
String port="3306"; //MySql Port
String dbname=""; //DataBase Name
String dbuser="root"; //DataBase UserName
String dbpass="root"; // User Password
String driver="com.mysql.jdbc.Driver"; //Driver
String url="jdbc:mysql://"+dburl+":"+port+"/"+dbname; //URL
///////////////////////////////
int rows = 0;
try
{
	Class.forName (driver).newInstance ( );
	Connection Connec = DriverManager.getConnection(url, dbuser, dbpass);

	for(int lop=0;lop<tokens;lop++) {
		Statement Stat1 = Connec.createStatement ( );
		rows = rows + Stat1.executeUpdate(array[lop]);
		Stat1.close ();
	}
	Connec.close();
	%><br />Restore is completed<br /><%
}
catch (Exception e)
{
	String ax="Cannot connect to server : "+e;%>
	<%=ax%><%
}

}else{
%>Not sql file<%
}
}
%>

ملاحظات:

المتغير dbname يجب ان يكون فارغا كما في هذا المثال

هذه الصفحة مشابهة للصفحة السابقة في كثير من الاشياء

عند تشغيل الصفحة الاولى والضغط على زر Restore

اذا لم يكن الملف صحيح سيبلغك بذلك اما اذا كان صحيح فستخرج لك الرسالة التالية

Restore is completed

هذا الملف من انتاجي ونظرا للحاجة الملحة قررت وضعه هنا

اذا اكان هناك اي سؤال او اشكال الرجاء ابلاغي

تحياتي

Abdullah - Space

restore.zip

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…