بسم الله الرحمن الرحيم
*هذا الموضوع مجرد فكرة خطرت على بالي واحببت مشاركتها مع الجميع
طريقة اخذ نسخة احتياطية من قاعدة بيانات MySQl
في البداية ننشئ قاعدة بيانات ولتكن تحمل اسم mydb
ثم ننشئ جدول اسمه user
CREATE TABLE `mydb`.`user` ( `username` VARCHAR(40), `password` VARCHAR(16), `fullname` TEXT, `userno` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (`userno`) ) CHARACTER SET utf8;
الان ننشئ صفحتى Jsp
الأولى باسم index.jsp
تحتوي على نموذج ادخال (Form) يحولك الى الصفحة الثانية
<%@ page contentType="text/html; charset=windows-1256" language="java" import="java.sql.*" errorPage="" %> <!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>BackUp</title> </head> <body> <form method="post" action="active.jsp?action=backup"> <input type="submit" value="!BackUp" /> </form> </body> </html>
الصفحة الثانية باسم active.jsp
<%@ page contentType="text/html; charset=windows-1256" language="java" import="java.sql.*, java.io.*, java.util.Date" errorPage="" session="false"%>
<!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>BackUp...</title>
</head>
<body>
<%
//////////////////////DataBase
String dburl="localhost"; //MySql Url
String port="3306"; //MySql Port
String dbname="mydb"; //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
///////////////////////////////
if(request.getParameter("action")!=null && request.getParameter("action").equals("backup")){
String fileName = "backNo"+new Date().getTime()+".sql";
String path = application.getRealPath(fileName);
String text="CREATE DATABASE IF NOT EXISTS "+dbname+"; \n USE "+dbname+"; \n";
text = text + "DROP TABLE IF EXISTS `"+dbname+"`.`user`; \n\n";
text = text + "CREATE TABLE `"+dbname+"`.`user` (\n`username` VARCHAR(40),\n`password` VARCHAR(16),\n`fullname` TEXT,\n`userno` INT NOT NULL AUTO_INCREMENT,\nPRIMARY KEY (`userno`))\nCHARACTER SET utf8; \n\n";
text = text + "LOCK TABLES `user` WRITE;\n\n";
text = text + "INSERT INTO `"+dbname+"`.`user`(username,password,fullname,userno) VALUES \n";
StringBuffer lsb_output = new StringBuffer();
try
{
Class.forName (driver).newInstance ( );
Connection Connec = DriverManager.getConnection(url, dbuser, dbpass);
Statement Stat1 = Connec.createStatement ( );
Stat1.executeQuery ("SELECT * FROM user");
ResultSet ReSt = Stat1.getResultSet();
while(ReSt.next())
{
text = text +"('"+ReSt.getString("username")+"','"+ReSt.getString("password")+"','"+ReSt.getString("fullname")+"',"+ReSt.getString("userno")+")";
if(ReSt.isLast() )
text = text +";\n UNLOCK TABLES;";
else
text = text +",\n";
}
}
catch (Exception e)
{
String ax="Cannot connect to server : "+e;%>
<%=ax %><%
}
lsb_output.append(text);
File lf_file = new File(path);
FileOutputStream los_file = new FileOutputStream(lf_file);
PrintWriter lpw_wrtr = new PrintWriter(los_file);
lpw_wrtr.print(lsb_output);
lpw_wrtr.flush();
lpw_wrtr.close();
los_file.flush();
los_file.close();
response.sendRedirect(fileName);
}
%>
</body>
</html>عند تشغيل الصفحة الاولى والضغط على زر backup
سينتج ملف بامتداد sql عبارة عن النسخة الاحتياطية
هذا الملف من انتاجي ونظرا للحاجة الملحة قررت وضعه هنا
اذا اكان هناك اي سؤال او اشكال الرجاء ابلاغي
تحياتي