首先,需要說一點,DB2的SQL語句和命令列語句是分開的,不象SQL SERVER 2000可以通過SQL語句進行備份,所以按照SQL SERVER的備份思路不是行的,試過多次,都提示後面發現意外標記,無奈,只有去網上查,看有沒有相關問題的解決方案,看到一個網友發的思路,深受啟發,他說,可以用JAVA調用外部程式,其實就是DB2的命令列工具DB2CMD.EXE然後對他傳入命令就可以了.下面是我寫的一段程式,可以參考下,也給我自己備忘.
//備份資料庫<br /> public void backupData(String url) throws SQLException, NamingException,<br /> IOException {<br /> /** URL是系統的根目錄,可以通過以下語句獲得,傳進來,HttpSession hs = request.getSession();<br /> String url = hs.getServletContext().getRealPath("/"); */<br /> url = url + "dbbak//";<br /> sql = "backup database anhang to '" + url + "'";<br /> Process pro = Runtime.getRuntime().exec("db2cmd /c /w /i db2 -v");//此處當然要配置db2cmd.exe的環境變數<br /> BufferedReader br = new BufferedReader(new InputStreamReader(pro.<br /> getInputStream()));<br /> PrintWriter pw = new PrintWriter(pro.getOutputStream());</p><p> //把所有的應用全停掉!否則會提示有應用程式正在使用此資料庫<br /> pw.println("force application all");<br />//備份資料庫<br /> pw.println("connect to anhang user " + username + " using " + password);<br /> pw.println(sql);<br /> pw.println("quit");<br /> pw.println("exit");<br /> pw.flush();<br /> String line = null;<br /> while ( (line = br.readLine()) != null) {<br /> System.out.println(line);<br /> }<br /> System.out.println("備份資料庫成功!");<br /> }