??xml version="1.0" encoding="utf-8" standalone="yes"?> 下面以一个具体的实例来学?fn)如何用FineReport调用Oracle存储q程的?
W一步,Oracel定义存储q程
StScroe是Oracele数据库中的张表,其中记录?jin)学生的成W信息Q表l构如下Q?
定义q回列表的存储过E?#8212;—׃oracle存储q程没有q回|它的所有返回值都是通过out参数来替代的Q列表同样也不例外,但由于是集合Q所以不能用一般的参数Q必要用pagkage?jin),所以定义存储过E要分两部分Q?
1.建立一个程序包Q如下:(x)
CREATE or REPLACE PACKAGE TESTPACKAGE AS 2.建立存储q程Q存储过Eؓ(f)Q? CREATE or REPLACE PROCEDURE p_STSCORE(Class in varchar2,p_CURSOR out TESTPACKAGE.Test_CURSOR) IS W二步,调用存储q程
1.启动FineReport设计器,叛_数据源面板,选择U有数据源,弹出U有数据源对话框?
2.点击增加按钮Q新Z个私有数据源Q名为ds1Q数据库选择为Oracle数据源,查询cd为存储过E,在sql文本框中写如下语句调用存储过E:(x)
3.点击预览按钮Q可以预览查询到的数据,如下所C:(x)
x(chng)QFineReport设计器成功调用Oracle存储q程Q?zhn)可以?gu)报表需求随?j)所Ʋ地设计报表样式?jin)?
需求说明书Q是Ҏ(gu)与现场实际客戯行沟通,把客L(fng)需求进行整理,CMMI中有标准的模板,我就不细说了(jin)Q重Ҏ(gu)站在客户的角度讲产品功能?
需求规D明书Q是从业务规则讲L(fng)Q细一点偏向于软g的概要设计。是从开发、测试的角度去讲产品功能Q里面要包含原型界面、业务接口、活动图{?
]]>
TYPE Test_CURSOR IS REF CURSOR;
END TESTPACKAGE;
BEGIN
OPEN p_CURSOR FOR select * FROM FR.STSCORE where STSCORE.ClassNo=Class;
END p_STSCORE;
]]>
]]>
clientY 讄或获取鼠标指针位|相对于H口客户区域?y 坐标Q其中客户区域不包括H口自n的控件和滚动条?
offsetX 讄或获取鼠标指针位|相对于触发事g的对象的 x 坐标?
offsetY 讄或获取鼠标指针位|相对于触发事g的对象的 y 坐标?
screenX 讄或获取获取鼠标指针位|相对于用户屏幕?x 坐标?
screenY 讄或获取鼠标指针位|相对于用户屏幕?y 坐标?
x 讄或获取鼠标指针位|相对于父文档的 x 像素坐标?
y 讄或获取鼠标指针位|相对于父文档的 y 像素坐标
实验实例Q来源于|络Q修改过Q:(x)
view plaincopy to clipboardprint?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<BODY onclick='test()' style="margin:0 0 0 0" mce_style="margin:0 0 0 0">
<font color=green>讄或获取鼠标指针位|相对于H口客户区域?x,y 坐标Q其中客户区域不包括H口自n的控件和滚动条?lt;/font>
<br/>
clientX=<INPUT TYPE="text" NAME="x1">
clientY=<INPUT TYPE="text" NAME="x2">
<br/>
<br/>
<font color=blue>讄或获取鼠标指针位|相对于触发事g的对象的 x,y 坐标?</font>
<br/>
offsetX =<INPUT TYPE="text" NAME="x3">
offsetY =<INPUT TYPE="text" NAME="x4">
<br/>
<br/>
<font color=green>讄或获取获取鼠标指针位|相对于用户屏幕?x,y 坐标 </font>
<br/>
screenX =<INPUT TYPE="text" NAME="x5">
screenY =<INPUT TYPE="text" NAME="x6">
<br/>
<br/>
<font color=blue>讄或获取鼠标指针位|相对于父文档的 x,y 像素坐标?lt;/font>
<br/>
x=<INPUT TYPE="text" NAME="x7">
y=<INPUT TYPE="text" NAME="x8">
<br/>
<br/>
<TABLE align="center" width=400 height=500 border=1 style="border-style:none" mce_style="border-style:none" CELLPADDING=0 CELLSPACING=0 onclick='test()'>
<TR>
<TD>a</TD>
<TD>b</TD>
</TR>
<TR>
<TD>c</TD>
<TD>d</TD>
</TR>
</TABLE>
</body>
</html>
<SCRIPT LANGUAGE="JavaScript">
<!--
function test(){
document.all.x1.value=event.clientX;
document.all.x2.value=event.clientY;
document.all.x3.value=event.offsetX;
document.all.x4.value=event.offsetY;
document.all.x5.value=event.screenX;
document.all.x6.value=event.screenY;
document.all.x7.value=event.x;
document.all.x8.value=event.y;
}
//-->
</SCRIPT>
实验l果分析Q?
clientX 和x值在实验q程中,没有发现g一L(fng)例子Q所以我认ؓ(f)它们在效果上是一L(fng)Q?
offsetX 是相对于当前H口内,本触发事件对象(或者是某一区域Q而言Q如本例中你单击a区域Q值是相对于a所?lt;td>区域而言Q同理bQcQd都一P
clientX QxQoffsetX共同点:(x)它们都是惛_于相对位|,只是offsetX是相对于触发对象的父容器而言Q?
screenX是相对与客户端显C器而言Q是l对位置Q?
l承
指的是一个类Q称为子cR子接口Q(h)承另外的一个类Q称为父cR父接口Q的功能Qƈ可以增加它自q新功能的能力Q(h)承是cMcL者接口与接口之间最常见的关p;在Java中此cdp通过关键字extends明确标识Q在设计时一般没有争议性;
实现
指的是一个classcd现interface接口Q可以是多个Q的功能Q实现是cM接口之间最常见的关p;在Java中此cdp通过关键字implements明确标识Q在设计时一般没有争议性;
依赖
可以单的理解Q就是一个类A使用C(jin)另一个类BQ而这U用关pLh偶然性的、、(f)时性的、非常弱的,但是Bcȝ变化?x)?jing)响到AQ比如某q河Q需要借用一条船Q此时h与船之间的关pd是依赖;表现在代码层面,为类B作ؓ(f)参数被类A在某个methodҎ(gu)中用;
兌
他体现的是两个类、或者类与接口之间语义别的一U强依赖关系Q比如我和我的朋友;q种关系比依赖更强、不存在依赖关系的偶然性、关pM不是临时性的Q一般是长期性的Q而且双方的关pM般是q等的、关联可以是单向、双向的Q表现在代码层面Qؓ(f)被关联类B以类属性的形式出现在关联类A中,也可能是兌cA引用?jin)一个类型ؓ(f)被关联类B的全局变量Q?/p>
聚合
聚合是关联关pȝ一U特例,他体现的是整体与部分、拥有的关系Q即has-a的关p,此时整体与部分之间是可分ȝQ他们可以具有各自的生命周期Q部分可以属于多个整体对象,也可以ؓ(f)多个整体对象׃nQ比如计机与CPU、公怸员工的关pȝQ表现在代码层面Q和兌关系是一致的Q只能从语义U别来区分;
l合
l合也是兌关系的一U特例,他体现的是一Ucontains-a的关p,q种关系比聚合更强,也称为强聚合Q他同样体现整体与部分间的关p,但此时整体与部分是不可分的,整体的生命周期结束也意味着部分的生命周期结束;比如你和你的大脑Q表现在代码层面Q和兌关系是一致的Q只能从语义U别来区分;
对于l承、实现这两种关系没多疑问,他们体现的是一U类与类、或者类与接口间的纵向关p;其他的四者关pd体现的是cMcR或者类与接口间的引用、横向关p,是比较难区分的,有很多事物间的关p要惛_备定位是很难的,前面也提刎ͼq几U关p都是语义别的Q所以从代码层面q不能完全区分各U关p;但ȝ来说Q后几种关系所表现的强q度依ơؓ(f)Q组?gt;聚合>兌>依赖
CRPQCapacity Requirment Planning 能力需求计?/p>
MRPQMaterials Requirement Planning 物料需求计?/p>
CRMQCustomer Relationship Management 客户关系理
ERMQEnterprise Relationship Management 企业关系理
SCMQSupply Chain Management 供应铄?/p>
ESBQEnterprise Services Bus 企业服务ȝ
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url"
value="jdbc:mysql://localhost:3306/mysql">
</property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
如果改ؓ(f)C3P0则ؓ(f)Q?/p>
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:jdbc.properties</value>
</property>
</bean>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="autoCommitOnClose" value="true"/>
<property name="checkoutTimeout" value="${cpool.checkoutTimeout}"/>
<property name="initialPoolSize" value="${cpool.minPoolSize}"/>
<property name="minPoolSize" value="${cpool.minPoolSize}"/>
<property name="maxPoolSize" value="${cpool.maxPoolSize}"/>
<property name="maxIdleTime" value="${cpool.maxIdleTime}"/>
<property name="acquireIncrement" value="${cpool.acquireIncrement}"/>
<property name="maxIdleTimeExcessConnections" value="${cpool.maxIdleTimeExcessConnections}"/>
</bean>
jdbc.propertiesQ?/p>
# Database URL
jdbc.url=jdbc:mysql://192.168.0.25"3306/db
# Database login information
jdbc.username=root
jdbc.password=
# Time to wait for an open connection before timing out
# (in milliseconds)
cpool.checkoutTimeout=5000
# Connection pool size
cpool.minPoolSize=5
cpool.maxPoolSize=40
# How long to keep unused connections around(in seconds)
# Note: MySQL times out idle connections after 8 hours(28,800 seconds)
# so ensure this value is below MySQL idle timeout
cpool.maxIdleTime=25200
# How long to hang on to excess unused connections after traffic spike
# (in seconds)
cpool.maxIdleTimeExcessConnections=1800
# Acquiring new connections is slow, so eagerly retrieve extra connections
# when current pool size is reached
cpool.acquireIncrement=5
或者将上面?部分写成一个:(x)
<bean id="c3p0DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass">
<value>${jdbc.driverClassName}</value>
</property>
<property name="jdbcUrl">
<value>${jdbc.url}</value>
</property>
<property name="user">
<value>${jdbc.username}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
<property name="initialPoolSize"><value>10</value></property>
<property name="minPoolSize"><value>5</value></property>
<property name="maxPoolSize"><value>30</value></property>
<property name="acquireIncrement"><value>5</value></property>
<property name="maxIdleTime"><value>10</value></property>
<property name="maxStatements"><value>0</value></property>
</bean>
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jndi/xxx</value>
</property>
</bean>
如果在应用里有独自用hibernateQ则在spring中配|hibernateq接池,使用C3P0如下Q?/p>
<bean id="DataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@172.16.20.241:1521:dbsvr</value>
</property>
<property name="username">
<value>hl3000</value>
</property>
<property name="password">
<value>hldw3101</value>
</property>
</bean>
<bean id="SessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="DataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<!-- C3P0q接池配|?nbsp; -->
<prop key="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop>
<prop key="hibernate.c3p0.max_size">20</prop>
<prop key="hibernate.c3p0.min_size">5</prop>
<prop key="hibernate.c3p0.timeout">120</prop>
<prop key="hibernate.c3p0.max_statements">100</prop>
<prop key="hibernate.c3p0.idle_test_period">120</prop>
<prop key="hibernate.c3p0.acquire_increment">2</prop>
<prop key="myeclipse.connection.profile">hl3000</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/hl3000/DBLogic/POJO/PermUserAccount.hbm.xml</value>
</list>
</property>
</bean>
spring中配|独立用hibernate时用jndi的配|:(x)
hibernate.dialect = net.sf.hibernate.dialect.MySQLDialect
hibernate.connection.datasource=java:comp/env/jdbc/SAMPLEDB
hibernate.show_sql=true
如果是用不受管理的Servlet容器如TomcatQ也可以使用jndi的方式配|,需要在tomcat中配|数据源Q在server.xml中增改大致如下:(x)
<Resource name="jdbc/testDb" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/testDB">\\数据源的名称
<parameter><name>username</name><value>root</value></parameter>数据库的名称
<parameter><name>password</name><value>password</value></parameter>数据库密?/p>
<parameter><name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value></parameter>\\要加载的驱动
<parameter><name>url</name>
<value>jdbc:mysql://172.20.0.73/rk?</value></parameter>\\要连接的URL
</ResourceParams>
开发文档包括:(x)《功能要求》、《投标方案》、《需求分析》、《技术分析》、《系l分析》、《数据库文档》、《功能函数文档》、《界面文档》、《编译手册》、?QA 文档》、《项目ȝ》等?
产品文档包括Q《品简介》、《品演C》、《疑问解{》、《功能介l》?《技术白皮书》、《评报告》、《安装手册》、《用手册》、《维护手册》?《用h告》、《销售培训》等?
一、开发文?
1. 《功能要求?-- 来源于客戯求和?jng)场调查Q是软g开发中最早期的一个环节。客hZ个模p的功能概念Q或者要求解决一个实际问题,或者参照同cY件的一个功能。有软gl验的客戯?sh)(x)提供比较详l的技术规范书Q把他们的要求全部列表书写在文档中,必要时加以图表解说。这份文档是需求分析的基础?
2. 《投标方案?-- Ҏ(gu)用户的功能要求,l过与招标方沟通和认Q技术h员开始书写《投标方案》,Ҏ(gu)书一般包括以下几个重要的章节Q?
前言 -- 目背景、公司背景和业务、技术h员结构、公司的成功案例介绍{?
需求分?-- 目要求、Y件结构、功能列表、功能描q、注意事等?
技术方?-- M要求和指导思想、技术解x(chng)案、Y件开发^台、网l结构体pȝ?
目理 -- 描述公司的Y件开发流E、工E实施服务、组l和人员分工、开发进度控制、Y件质量保证、项目验收和人员培训、Y件资料文档等?
技术支?-- 公司的技术支持和服务介绍、服务宗旨和目标、服务别和响应旉、技术服务区域、技术服务期限、授权用戯pMh{?
pȝ报h(hun) -- 软、硬件^台报价列表、Y件开发费用、系l维护费用等?
目q度 -- 整个目的进度计划,包括{v合同、项目启动、需求分析、系l分析、程序开发、测试维护、系l集成、用户验收、用户培训等步骤的时间规划?
3. 《需求分析?-- 包括产品概述、主要概c(din)操作流E、功能列表和解说、注意事V系l环境等。以《功能要求》ؓ(f)基础Q进行详l的功能分析 ( 包括客户提出的要求和Ҏ(gu)开发经验徏议的功能 ) Q列出本产品是什么,有什么特D的概念Q包括那些功能分c,需要具备什么功能,该功能的操作如何Q实现的时候该注意什么细节,客户有什么要求,pȝq行环境的要求等。这里的功能描述跟以后的使用手册是一致的?/p>
4. 《技术分析?-- 包括技术选型、技术比较、开发h员、关键技术问题的解决、技术风险、技术升U方向、技术方案评P竞争Ҏ(gu)技术分析等。以《需求分析》ؓ(f)基础Q进行详l的技术分?( 产品的性能和实现方?) Q列出本目需要用什么技术方案,Z么,有哪些技术问题要解决 Q估计开发期间会(x)到什么困难,技术方案以后如何升U,Ҏ(gu)目的技术有什么评L(fng)?/p>
5. 《系l分析?-- 包括功能实现、模块组成、功能流E图、函数接口、数据字典、Y件开发需要考虑的各U问题等。以《需求分析》ؓ(f)基础Q进行详l的pȝ分析 ( 产品的开发和实现Ҏ(gu) ) Q估计开发期间需要把什么问题说明白Q程序员Ҏ(gu)《系l分析》,开始在目ȝ的带领下q行~码?/p>
6. 《数据库文档?-- 包括数据库名U、表名、字D名、字D늱型、字D说明、备注、字D|D公式等。以《系l分析》ؓ(f)基础Q进行详l的数据库设计。必要时可以用图表解_(d)特别是关pL据库?/p>
7. 《功能函数文档?-- 包括变量名、变量初植、功能,函数名,参数Q如何调用、备注、注意事等。以《系l分析》ؓ(f)基础Q进行详l的说明Q列出哪个功能涉?qing)多个函数Q以便以后程序员?sh)改、接手和扩展?
8. 《界面文档?-- 包括软g外观、界面素材、编辑工兗文件名、菜单、按钮和其它界面部g的要求,q里与Y件完成后的运行界面是一致的?
9. 《编译手册?-- 包括服务器编译环境、操作系l、编译工兗?GNU ?C++ ~译器版本信息、目录说明、程序生成、源E序文g列表?Makefile 配置?qing)其相关E序的对应关pd表。客L(fng)的编译过E、编译结果、编译示例、编译环境、操作系l、编译工兗源文g列表和制作安装程序的q程?
10. ?QA 文档?-- 包括产品介、品原理、品功能列表、功能描q、功能流E、执行结果、数据库l构、测试要求等Q提供给软g试人员?sh)用?
11. 《项目ȝ?-- 包括目介、项目参与h员和开发时间、项目风险管理过E、项目功能列表、项目结构特炏V技术特炏V对目的升U徏议、对以后的项目的、h员素质情늭?
二、品文?
1. 《品简介?-- 包括公司背景、品概c(din)适用范围、品功能、功能特炏V运行要求和公司联系地址?
2. 《品演C?-- 包括公司介、品背景、品描q、品特炏V品作用、适用范围、用分析、功能模块、解决问题、合作伙伴、成功案例等。一般用 Power
point 或?VCD 录制软g实现?
3. 《疑问解{?-- 列出用户兛_(j)的问题和处理Ҏ(gu)。用于解{Y件的操作功能和解决用L(fng)疑难问题?
4. 《功能介l?-- 以《需求分析》ؓ(f)书写基础Q包括Y件介l、Y件结构、功能列表、功能描q和公司联系地址?
5. 《技术白皮书?-- 以《技术分析》ؓ(f)书写基础Q包括功能实现、技术选型、关键技术问题的解决、技术方案特炏V技术升U方向等?
6. 《评报告?-- W三Ҏ(gu)威评报告。包括评目的、评范围、评环境、评内宏V实数据、性能表现、结果分析和评测ȝ{?
7. 《安装手册?-- 包括pȝ环境、运行^台、品安装过E、初始环境设|、安装记录等?
8. 《用手册?-- 包括产品介、功能列表、功能描q和解释、功能操作、客h务和联系方式{?
9. 《维护手册?-- 包括产品介、系l须知、初始环境设|、系l配|、数据管理和备䆾、技术问题解{和联系方式{?
10. 《用h告?-- 包括产品介、购买时间、用目的、用时间、用地炏V实施过E、出现问题和解决、品ȝ和徏议等?
11. 《销售培训?-- 包括目介、品功能、品特炏V商业优ѝ系l运行环境、适用范围、目标客L(fng)?/p>