Java程序调用系统命令进行mysql数据库的备份与还原(方式二)
        第二种方式:
数据备份:
public class dbbackup {
public static void backup(string dbname,string file){
   string user = "root"; // 数据库帐号
    string password = "123456"; // 登陆密码
    string database = dbname; // 需要备份的数据库名
    string filepath = file; // 备份的路径地址 
    //mysql命令的路径
    string mysqlpath="c:/program files/mysql/mysql server 5.1/bin/";
    try{
          runtime rt = runtime.getruntime();
          process child = rt.exec(mysqlpath+"mysqldump  -u"+user+" -p"+password+" "+database);
          inputstream in = child.getinputstream();// 控制台的输出信息作为输入流
          inputstreamreader isr = new inputstreamreader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码
            string instr;    
          stringbuffer sb = new stringbuffer("");    
          string outstr;  
          // 组合控制台输出信息字符串    
            bufferedreader br = new bufferedreader(isr); 
          while ((instr = br.readline()) != null) {    
                sb.append(instr + "\r\n");    
          } 
          outstr = sb.tostring();//备份出来的内容是一个字条串
            fileoutputstream fout = new fileoutputstream(filepath); 
          outputstreamwriter writer = new outputstreamwriter(fout, "utf8"); 
           writer.write(outstr);//写文件    
            // 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免    
            writer.flush();  
           // 别忘记关闭输入输出流    
              in.close();    
            isr.close();    
            br.close();    
            writer.close();    
            fout.close(); 
    }
    catch(exception e){
         e.printstacktrace();
    }
}
}
数据还原:
public class dbupload {
   private static string databases;
   static{
       querybuilder qb=new querybuilder("show databases;");
       datatable dt=qb.executedatatable();
       stringbuffer court=new stringbuffer("");
       if(dt.getrowcount()>0){
	for(int i=0;i<dt.getrowcount();i++){
	   if(i==0){
		court.append(dt.ge