如果SQL資料庫備份檔要還原的檔案位置, 和原備份位置不相同,
就要修改指令檔備份
指令範例:
RESTORE DATABASE [DSCSYS]
FROM DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\DSCSYS_backup_200811140000.bak\DSCSYS_backup_200811140000.bak'
WITH MOVE 'DSCSYS_data' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\DSCSYS.mdf',
MOVE 'DSCSYS_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\DSCSYS.log',
REPLACE;
GO
2008年10月20日 星期一
使用 apache fileupload (含中文亂碼修正)
之前上傳是使用SmartUpload, 原本是沒問題, 後來tomcat 更新之後.
上傳就出現亂碼, 在網路上花好幾天找解決方法, 但我都設不起來,
我就想下載新版SmartUpload, 後來才發現連SmartUpload網站都消
失了, SmartUpload大概也不會有人更新了. 所以我改用apache
的fileupload , 而且它還持續在更新中. 下面文章是我從各家好手
中的文章試出來, 然後匯整在一起來. 希望能幫大家的忙.
因為找資料試程式真的很辛苦.
一. 先到apache 網站下載 io 及 fileupload 元件
解壓縮後放到C:\Tomcat\webapps\ROOT\WEB-INF\lib 目錄中,
接著重開tomcat 就算成功完裝了.
二.測試上傳功能
<html>
<head>
<title>檔案上傳</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<b>檔案上傳</b></font></p>
<form name="UploadForm" enctype="multipart/form-data" method="post" action="test2.jsp">
<input type="file" name="File1" size="20" maxlength="20"> <br>
<input type="file" name="File2" size="20" maxlength="20"> <br>
<input type="submit"value="上傳">
</form>
</body>
</html>
接收上傳的頁面
<%@ page import="javax.servlet.*"%>
<%@ page import="javax.servlet.http.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.util.regex.*"%>
<%@ page import="org.apache.commons.fileupload.*"%>
<%@page contentType="text/html;charset=UTF-8"%>
<%
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
String enc = System.getProperty("file.encoding");
out.println(enc);
%>
<html>
<head>
<title>文件上傳處理頁面</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<%
DiskFileUpload fu = new DiskFileUpload();
fu.setSizeMax(2*1024*1024);
fu.setSizeThreshold(4096);
//先處存到暫存區
fu.setRepositoryPath(application.getRealPath("/") + "temp/");
//開始上處
List fileItems = fu.parseRequest(request);
// 依序處理上傳文件
Iterator iter = fileItems.iterator();
//檢查上傳的檔案格式
String regExp=".+\\\\(.+)$";
//拒絕文件類型
String[] errorType={".exe",".com",".cgi",".asp"};
Pattern p = Pattern.compile(regExp);
while (iter.hasNext()) {
FileItem item = (FileItem)iter.next();
//如果是request item 就在這接收
if (item.isFormField()){
String name = item.getFieldName();
String value = item.getString();
out.println("name:"+item.getFieldName());
out.println("value:"+item.getString("UTF-8"));
}
//如果是上傳檔案, 就在這接收
if (!item.isFormField()) {
String name = item.getName();
long size = item.getSize();
if((name==null||name.equals("")) && size==0)
continue;
Matcher m = p.matcher(name);
boolean result = m.find();
if (result){
for (int temp=0;temp<errorType.length;temp++){
if (m.group(1).endsWith(errorType[temp])){
throw new IOException(name+": wrong type");
}
}
try{
//儲存檔案到指定位置
item.write(new File(application.getRealPath("/") + "temp/" + m.group(1)));
out.println(name+" "+size+"<br>");
// out.println(new String(name.toString().getBytes(), "UTF-8")+" "+size+"<br>");
}
catch(Exception e){
out.println(e);
}
%>
<TABLE class=text width=100% border=0>
<SCRIPT LANGUAGE="JavaScript">
function back(num)
{
num = num * (-1);
window.parent.frames[1].location.reload();
history.go(num);
}
</SCRIPT>
<TR>
<TD width="10%" >
<FORM METHOD="post">
<INPUT TYPE="button" VALUE="回上一頁" onClick="back(1)">
</FORM>
</TD>
</TR>
</table>
<%
}
else
{
throw new IOException("fail to upload");
}
}
}
%>
</body>
</html>
上傳就出現亂碼, 在網路上花好幾天找解決方法, 但我都設不起來,
我就想下載新版SmartUpload, 後來才發現連SmartUpload網站都消
失了, SmartUpload大概也不會有人更新了. 所以我改用apache
的fileupload , 而且它還持續在更新中. 下面文章是我從各家好手
中的文章試出來, 然後匯整在一起來. 希望能幫大家的忙.
因為找資料試程式真的很辛苦.
一. 先到apache 網站下載 io 及 fileupload 元件
解壓縮後放到C:\Tomcat\webapps\ROOT\WEB-INF\lib 目錄中,
接著重開tomcat 就算成功完裝了.
二.測試上傳功能
<html>
<head>
<title>檔案上傳</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<b>檔案上傳</b></font></p>
<form name="UploadForm" enctype="multipart/form-data" method="post" action="test2.jsp">
<input type="file" name="File1" size="20" maxlength="20"> <br>
<input type="file" name="File2" size="20" maxlength="20"> <br>
<input type="submit"value="上傳">
</form>
</body>
</html>
接收上傳的頁面
<%@ page import="javax.servlet.*"%>
<%@ page import="javax.servlet.http.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.util.regex.*"%>
<%@ page import="org.apache.commons.fileupload.*"%>
<%@page contentType="text/html;charset=UTF-8"%>
<%
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
String enc = System.getProperty("file.encoding");
out.println(enc);
%>
<html>
<head>
<title>文件上傳處理頁面</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<%
DiskFileUpload fu = new DiskFileUpload();
fu.setSizeMax(2*1024*1024);
fu.setSizeThreshold(4096);
//先處存到暫存區
fu.setRepositoryPath(application.getRealPath("/") + "temp/");
//開始上處
List fileItems = fu.parseRequest(request);
// 依序處理上傳文件
Iterator iter = fileItems.iterator();
//檢查上傳的檔案格式
String regExp=".+\\\\(.+)$";
//拒絕文件類型
String[] errorType={".exe",".com",".cgi",".asp"};
Pattern p = Pattern.compile(regExp);
while (iter.hasNext()) {
FileItem item = (FileItem)iter.next();
//如果是request item 就在這接收
if (item.isFormField()){
String name = item.getFieldName();
String value = item.getString();
out.println("name:"+item.getFieldName());
out.println("value:"+item.getString("UTF-8"));
}
//如果是上傳檔案, 就在這接收
if (!item.isFormField()) {
String name = item.getName();
long size = item.getSize();
if((name==null||name.equals("")) && size==0)
continue;
Matcher m = p.matcher(name);
boolean result = m.find();
if (result){
for (int temp=0;temp<errorType.length;temp++){
if (m.group(1).endsWith(errorType[temp])){
throw new IOException(name+": wrong type");
}
}
try{
//儲存檔案到指定位置
item.write(new File(application.getRealPath("/") + "temp/" + m.group(1)));
out.println(name+" "+size+"<br>");
// out.println(new String(name.toString().getBytes(), "UTF-8")+" "+size+"<br>");
}
catch(Exception e){
out.println(e);
}
%>
<TABLE class=text width=100% border=0>
<SCRIPT LANGUAGE="JavaScript">
function back(num)
{
num = num * (-1);
window.parent.frames[1].location.reload();
history.go(num);
}
</SCRIPT>
<TR>
<TD width="10%" >
<FORM METHOD="post">
<INPUT TYPE="button" VALUE="回上一頁" onClick="back(1)">
</FORM>
</TD>
</TR>
</table>
<%
}
else
{
throw new IOException("fail to upload");
}
}
}
%>
</body>
</html>
2008年10月5日 星期日
2008年9月30日 星期二
使用IReport 產生EXCEL檔的範例

JasperPrint jasperPrint;
JRResultSetDataSource jrds=null;
/* 帶參數進去給報表 */
Map map = new HashMap();
map.put("name","王小明");
Date d = new Date();
String Pdf_Name= (d.getYear()+1900)+"_"+(d.getMonth()+1)+"_"+d.getDate()+"_"+d.getHours()+"_"+d.getMinutes()+"_"+d.getSeconds();
try{
StrSQL = " SELECT SN, PRODUCT_TYPE, TC001, TD004, TD005, TD008, TB005_A, TA018_A, BAD_RATE_A, TA017_A, TB005_B, TA018_B, BAD_RATE_B, TA017_B, TB005_C, TA018_C, ";
StrSQL += " BAD_RATE_C, TA017_C, TB005_4, TA018_4, BAD_RATE_4, TA017_4, SUB_BAD_RATE ";
StrSQL += " FROM CARD_MOC013R ";
StrSQL += " ORDER BY PRODUCT_TYPE, TC001 ";
//out.println(StrSQL);
rs= stmt.executeQuery(StrSQL);
rs= stmt.executeQuery(StrSQL);
if(!rs.next()){
out.println("沒有資料,請重新查詢!!");
out.println("統計表");
}else{
rs.previous() ;
String fileName = application.getRealPath("MOC013R.jasper");
String outPath = application.getRealPath("MOC013R_"+Pdf_Name+".xls");
String outPath2 = application.getRealPath("MOC013R_"+Pdf_Name+".pdf");
File reportFile1 = new File(application.getRealPath("MOC013R.jasper"));
out.println("統計表_EXCEL版");
JasperPrint report = JasperFillManager.fillReport(fileName,map, new JRResultSetDataSource(rs));
JRAbstractExporter exporter = new JExcelApiExporter();
FileOutputStream output = new FileOutputStream(outPath);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, report);
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, false);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, output);
exporter.exportReport();
output.close();
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile1.getPath());
jasperPrint = JasperFillManager.fillReport(jasperReport,map, new JRResultSetDataSource(rs));
JasperPrintManager.printReportToPdfFile(jasperPrint, outPath2);
/* 把報表轉換成 PDF, 給定 ( RecordSet, 輸出路徑 ) */
JasperExportManager.exportReportToPdfFile(jasperPrint,outPath2);
}
/* 連線關閉 */
} catch (JRException e) {
e.printStackTrace();
}
ireport 的四則運算
IReport 說好用也好用,說難用也很難用!!
它的功能很強,不輸水晶,但操作起來並不直覺。
但習慣後還真不能沒有它。雖然它讓我吃盡苦頭。
如下面是兩數相除,要用下面的語法
new java.lang.Float( ($V{SUM_TA018_C_1}.floatValue()) /($V{SUM_TB005_C_1}.floatValue()) )
如下面僅僅是兩個數相加
(new BigDecimal( Double.parseDouble($V{SUM_week_1_6} +"") +Double.parseDouble($V
{SUM_week_2_4}+"") ))
這個是Boolean判斷式的寫法
new Boolean($V{REPORT_COUNT}.intValue() % 2 == 0)
這是if 判斷的寫法
$F{quantity} == null ? "No data" : String.valueOf($F{quantity})
在IReport 中的四則運算, 不能只單純使用數目的加減乘除, 所以如果忘記或不熟加減乘除的寫法,
可以照下面圖片, 去產生語法範例, 注意喔, 它僅僅是範例, 所以還有改寫成要 去產生語法範例, 注意喔, 它僅僅是範例, 所以還有改寫成要操作的運算式, 在報表中使用.
它的功能很強,不輸水晶,但操作起來並不直覺。
但習慣後還真不能沒有它。雖然它讓我吃盡苦頭。
如下面是兩數相除,要用下面的語法
new java.lang.Float( ($V{SUM_TA018_C_1}.floatValue()) /($V{SUM_TB005_C_1}.floatValue()) )
如下面僅僅是兩個數相加
(new BigDecimal( Double.parseDouble($V{SUM_week_1_6} +"") +Double.parseDouble($V
{SUM_week_2_4}+"") ))
這個是Boolean判斷式的寫法
new Boolean($V{REPORT_COUNT}.intValue() % 2 == 0)
這是if 判斷的寫法
$F{quantity} == null ? "No data" : String.valueOf($F{quantity})
在IReport 中的四則運算, 不能只單純使用數目的加減乘除, 所以如果忘記或不熟加減乘除的寫法,
可以照下面圖片, 去產生語法範例, 注意喔, 它僅僅是範例, 所以還有改寫成要 去產生語法範例, 注意喔, 它僅僅是範例, 所以還有改寫成要操作的運算式, 在報表中使用.
2008年5月6日 星期二
iREPORT的Sample
呼!!
之前完全沒有iREPORT的經驗, 這段語法測了好久,
現在已經可以使用兩個範例,
一個是直接使用MOC001.jasper,
一個就是這個可以把SQL語法帶入報表中.
<%@ page contentType="text/html;charset=UTF-8"%>
<%
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
%>
<%@page import="net.sf.jasperreports.engine.*"%>
<%@page import="net.sf.jasperreports.engine.JasperFillManager"%>
<%@page import="net.sf.jasperreports.engine.JasperRunManager"%>
<%@page import="net.sf.jasperreports.engine.*"%>
<%@page import="net.sf.jasperreports.engine.util.*"%>
<%@page import="net.sf.jasperreports.engine.export.*"%>
<%@page import="net.sf.jasperreports.j2ee.servlets.*"%>
<%@page import="net.sf.jasperreports.engine.JasperPrintManager"%>
<%@page import="net.sf.jasperreports.view.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.sql.*"%>
<%
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
/* 連線部分 */
Connection conn=null;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:pg","pg","_pg");
Statement stmt = con.createStatement();
ResultSet rs;
try {
//SQL語法
String StrSQL = " select * from test ";
//out.println(StrSQL);
rs= stmt.executeQuery(StrSQL);
if(!rs.next()){return;}
else{
out.println(rs.getString("訂單日期"));
out.println("有資料");
JRResultSetDataSource jrds=null;
JasperPrint jasperPrint=null;
Map reportParams = new HashMap();
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(application.getRealPath("MOC001.jasper"));
jrds = new JRResultSetDataSource(rs);
jasperPrint =JasperFillManager.fillReport(jasperReport, reportParams,jrds);
//產出PDF
JasperPrintManager.printReportToPdfFile(jasperPrint, application.getRealPath("MOC001.pdf"));
/* 把報表轉換成 PDF, 給定 ( RecordSet, 輸出路徑 ) */
//JasperExportManager.exportReportToPdfFile(jasperPrint,outPath);
/* 把報表轉換成 PDF, 給定 ( 輸入路徑, 輸出路徑, 參數, 連線 ) */
//JasperRunManager.runReportToPdfFile(filePath, outPath, map, con);
}
} catch (JRException e) {
e.printStackTrace();
}
con.close();
%>
<% out.println("讀取ERP每日進度表");%>
之前完全沒有iREPORT的經驗, 這段語法測了好久,
現在已經可以使用兩個範例,
一個是直接使用MOC001.jasper,
一個就是這個可以把SQL語法帶入報表中.
<%@ page contentType="text/html;charset=UTF-8"%>
<%
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
%>
<%@page import="net.sf.jasperreports.engine.*"%>
<%@page import="net.sf.jasperreports.engine.JasperFillManager"%>
<%@page import="net.sf.jasperreports.engine.JasperRunManager"%>
<%@page import="net.sf.jasperreports.engine.*"%>
<%@page import="net.sf.jasperreports.engine.util.*"%>
<%@page import="net.sf.jasperreports.engine.export.*"%>
<%@page import="net.sf.jasperreports.j2ee.servlets.*"%>
<%@page import="net.sf.jasperreports.engine.JasperPrintManager"%>
<%@page import="net.sf.jasperreports.view.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.sql.*"%>
<%
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
/* 連線部分 */
Connection conn=null;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:pg","pg","_pg");
Statement stmt = con.createStatement();
ResultSet rs;
try {
//SQL語法
String StrSQL = " select * from test ";
//out.println(StrSQL);
rs= stmt.executeQuery(StrSQL);
if(!rs.next()){return;}
else{
out.println(rs.getString("訂單日期"));
out.println("有資料");
JRResultSetDataSource jrds=null;
JasperPrint jasperPrint=null;
Map reportParams = new HashMap();
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(application.getRealPath("MOC001.jasper"));
jrds = new JRResultSetDataSource(rs);
jasperPrint =JasperFillManager.fillReport(jasperReport, reportParams,jrds);
//產出PDF
JasperPrintManager.printReportToPdfFile(jasperPrint, application.getRealPath("MOC001.pdf"));
/* 把報表轉換成 PDF, 給定 ( RecordSet, 輸出路徑 ) */
//JasperExportManager.exportReportToPdfFile(jasperPrint,outPath);
/* 把報表轉換成 PDF, 給定 ( 輸入路徑, 輸出路徑, 參數, 連線 ) */
//JasperRunManager.runReportToPdfFile(filePath, outPath, map, con);
}
} catch (JRException e) {
e.printStackTrace();
}
con.close();
%>
<% out.println("讀取ERP每日進度表");%>
2008年4月30日 星期三
APACHE2.2搭配TOMCAT6
先裝APACHE2.2, 再裝TOMCAT6
然後只需要修改APACHE2.2\conf\httpd.conf 這個檔案,
在這個檔案最底層加入下列程式碼就可以了
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from all
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from all
ProxyRequests Off
ProxyPass /examples http://192.168.42.1:8080/examples/
然後只需要修改APACHE2.2\conf\httpd.conf 這個檔案,
在這個檔案最底層加入下列程式碼就可以了
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from all
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from all
ProxyRequests Off
ProxyPass /examples http://192.168.42.1:8080/examples/
訂閱:
文章 (Atom)
