📄 webprint.java
字号:
//java.sql.Blob myBlob = null;
java.sql.Clob myClob = null;
java.sql.Clob myClob1 = null;
// set Oracle's Auto Commit feature to false.
// This is necessary when manipulating Blobs and Clobs.
// CallableStatement cstmt=null;
try {
Statement readclob = con.createStatement();
readclob.execute("select * from fccell where fstrtablename='"+strName+"'");
ResultSet rsreadclob = readclob.getResultSet();
// read the clob in as and ASCII stream, write to a character array, and display
String sTest="";
String sTest1="";
while ( rsreadclob.next() ) {
Clob myReadClob =rsreadclob.getClob("fstrtable1");
int iLen=1;
iLen=(int)myReadClob.length();
sTest=myReadClob.getSubString(1,iLen);
sTmp=sTest;
//System.out.println("output " +sTest );
}
}
catch (Exception e){
e.printStackTrace();
sTmp=e.getMessage() ;
}
return sTmp ;
}
*/
//--------------------------------------
//两个结果集的示例,第一个用连接池打开,第二个用一般方式打开
private String twors() {
// Node root = document.getChildNodes().item(0);
// String sField=root.getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
// String sTable=root.getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
/*
String strSql="select flngVoucherID,fstrVoucherTypeName from Voucher" ;
String sTmp="";
try {
Statement stmt = con.createStatement();
rs = stmt.executeQuery(strSql);
while (rs.next()) {
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
String sConnStr = "jdbc:odbc:ereport";
Class.forName(sDBDriver);
Connection con1 = DriverManager.getConnection(sConnStr,"sa","");
String sT=rs.getString(1);
Statement stmt1 = con1.createStatement();
rs1 = stmt1.executeQuery("select fstrAccountName from voucherdetail Where flngVoucherId="+sT);
while (rs1.next()) {
System.out.println("科目:"+rs1.getString(1));
}
}
}
catch (Exception e){
sTmp=e.getMessage() ;
}
return sTmp;
*/
return "";
}
//--------------------------------------
private String fc_FieldToTable() {
Node root = document.getChildNodes().item(0);
String sField=root.getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
String sTable=root.getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
String strSql="select "+sField+" From "+sTable ;
String sTmp="";
try {
Statement stmt = con.createStatement();
rs = stmt.executeQuery(strSql);
}
catch (Exception e){
sTmp=e.getMessage() ;
}
return sTmp;
}
//--------------------------------------
private String GetDB() {
Node root = document.getChildNodes().item(0);
String sConnect=root.getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
String sSql=root.getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
sSql=fcTrans(sSql);
//System.out.println(sSql);
String sR="";
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver"; //建立数据库连接
String sConnStr = "jdbc:odbc:"+sConnect ;
try {
Class.forName(sDBDriver);
con = DriverManager.getConnection(sConnStr,"sa","");
Statement stmt = con.createStatement();
rs = stmt.executeQuery(sSql);//执行查询建立结果集
if (rs.next()) {
sR=rs.getString(1);
}
rs.close();
stmt.close();
}
catch (Exception e){
sR=e.getMessage();
}
return sR;
}
//--------------------------------------
private String fc_select() {
Node root = document.getChildNodes().item(0);
String strSql=root.getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
String strPageNo=root.getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
int iPageNo=Integer.parseInt(strPageNo,10);//页号
String strPageSize=root.getChildNodes().item(2).getChildNodes().item(0).getNodeValue();
int iPageSize=Integer.parseInt(strPageSize,10);//页尺寸
strSql=fcTrans(strSql);
//System.out.println(strSql);
String strX = "<root>";
String sTmp = "";
int iField=1;
int iCount=1;
int i=1;
try {
Statement stmt = con.createStatement();
rs = stmt.executeQuery(strSql);
ResultSetMetaData rsmd=rs.getMetaData();
while (rs.next()) {
//每页30行
if (i>(iPageNo-1)*iPageSize && i<=iPageNo*iPageSize) {
strX = strX + "<record>";
iCount=rsmd.getColumnCount();
for (iField = 1 ; iField<=iCount ;iField++ )
{
//当有NULL字段名时,表示此则无需给值.用fcnull标记名区分.
String colName=rsmd.getColumnName(iField);
if (colName==null) {
strX = strX + "<fcnull></fcnull>" ;
}
else {
String sT=rs.getString(iField);
if (sT==null) sT="";
strX = strX + "<fc>" + sT +"</fc>" ;
}
}
strX = strX + "</record>";
}
i = i + 1;
}
i=i-1;
if (i>0) {
strX = strX + "<pages>"+i+"</pages>";
}
strX = strX + "</root>";
rs.close();
}
catch (Exception e){
sTmp=e.getMessage() ;
System.out.println(sTmp);
e.printStackTrace();
}
return strX ;
}
//--------------------------------------
private String fc_select1() {
//将页号和页尺寸两个节点从第一个子节点和第二个子节点改为第一个子节点下的第一个子节点和第二个子节点
//将第二个子节点空出来给设置数据源用.
//第二个子节点下将有三个子节点:数据源名称,用户名,密码.
Node root = document.getChildNodes().item(0);
String strPageNo=root.getChildNodes().item(0).getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
int iPageNo=Integer.parseInt(strPageNo,10);//页号
String strPageSize=root.getChildNodes().item(0).getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
int iPageSize=Integer.parseInt(strPageSize,10);//页尺寸
//数据源
strDataSource=root.getChildNodes().item(1).getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
strUserName=root.getChildNodes().item(1).getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
try {
strPassword=root.getChildNodes().item(1).getChildNodes().item(2).getChildNodes().item(0).getNodeValue();
}
catch (Exception e){
strPassword="";
}
//-------
//多SQL查询
String strX = "<root>";
int ii=0;
int i=1;
//按顺序取出SQL节点
for(ii=2;ii<root.getChildNodes().getLength();ii++){
String strSql=root.getChildNodes().item(ii).getChildNodes().item(0).getNodeValue();
strX=strX+fc_selectTmp(iPageNo,iPageSize,i,strSql);
i=iPosition;
} //For循环结束
i=i-1;
if (i>0) {
strX = strX + "<pages>"+i+"</pages>";
}
strX = strX + "</root>";
return strX ;
}
//--------------------------------------
//计算一个SQL查询,供fc_select1 fc_select2类函数使用
private String fc_selectTmp(int iPageNo,int iPageSize,int iPos,String strSql) {
//iPageNo为起始页号,iPageSize为页尺寸,iPos为所有查询结果的行位置,strSql为要执行的SQL语句
//返回SQL语句的运行结果,结果为以<record>...</record>形式的XML串
//
strSql=fcTrans(strSql);
String sTmp = "";
String strX = "";
int iField=1;
int iCount=1;
int i=iPos;
try {
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
String sConnStr = "jdbc:odbc:"+strDataSource;
Class.forName(sDBDriver);
Connection conTmp = DriverManager.getConnection(sConnStr,strUserName,strPassword);
/**
注:当改动数据库连接时应将下面这行的conTmp改为con,同时去掉上面四行.
*/
Statement stmtTmp = conTmp.createStatement();
ResultSet rsTmp = stmtTmp.executeQuery(strSql);
ResultSetMetaData rsmdTmp=rsTmp.getMetaData();
while (rsTmp.next()) {
//每页30行
if (i>(iPageNo-1)*iPageSize && i<=iPageNo*iPageSize) {
strX = strX + "<record>";
iCount=rsmdTmp.getColumnCount();
for (iField = 1 ; iField<=iCount ;iField++ )
{
//当有NULL字段名时,表示此则无需给值.用fcnull标记名区分.
String colName=rsmdTmp.getColumnName(iField);
if (colName==null) {
strX = strX + "<fcnull></fcnull>" ;
}
else {
String sT=rsTmp.getString(iField);
if (sT==null) sT="";
strX = strX + "<fc>" + sT +"</fc>" ;
}
}
strX = strX + "</record>";
}
i = i + 1;
}
rsTmp.close();
stmtTmp.close();
con.close();
}
catch (Exception e){
sTmp=e.getMessage() ;
System.out.println("0712:"+sTmp);
System.out.println("0712:"+strSql);
}
iPosition=i; //用iPosition全局变量将i值传到调用函数中.
//System.out.println("strX="+strSql);
return strX;
}
//--------------------------------------
//带分组小计的多SQL查询
private String fc_select2() {
//sXml的结构:
//1页号 2页尺寸 3主SQL<1SQL语句 2<before... > > 4Group<1SQL语句 2GroupField >
int i=1;
String beforeSum="0"; //=0表示合计行在后,=1表示合计行在前。
String strX = "";
String strX1 = "";
String strRetXml = ""; //返回的总的Xml串
//将页号和页尺寸两个节点从第一个子节点和第二个子节点改为第一个子节点下的第一个子节点和第二个子节点
//将第二个子节点空出来给设置数据源用.
//第二个子节点下将有三个子节点:数据源名称,用户名,密码.
Node root = document.getChildNodes().item(0);
String strPageNo=root.getChildNodes().item(0).getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
int iPageNo=Integer.parseInt(strPageNo,10);//页号
String strPageSize=root.getChildNodes().item(0).getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
int iPageSize=Integer.parseInt(strPageSize,10);//页尺寸
//数据源
strDataSource=root.getChildNodes().item(1).getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
strUserName=root.getChildNodes().item(1).getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
try {
strPassword=root.getChildNodes().item(1).getChildNodes().item(2).getChildNodes().item(0).getNodeValue();
}
catch (Exception e){
strPassword="";
}
//-------
//第3个子节点的第1个子节点的值用如下求法.
String strSql=root.getChildNodes().item(2).getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
//strSql=fcTrans(strSql);
//System.out.println(strSql);
//第3个子节点的第2个子节点下的第1个子节点的值用如下求法.
String strStartXml=""; //首合计行的xml串
//总计行之类的
try {
//如有一个节点表示首合计行,如有二个节点表示第一为首合计行,第二为尾合计行
String sStartSql=root.getChildNodes().item(2).getChildNodes().item(1).getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
//此处现只假定只有一个查询,如有多个,则此处要用循环
strStartXml=fc_selectTmp(iPageNo,iPageSize,i,sStartSql);
i=iPosition;
}
catch (Exception e){
}
//-----------------
String sGroup1="";
String sGroup2="";
//String sGroup3="";
//第一个分组
sGroup1=root.getChildNodes().item(3).getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
sGroup1=fcTrans(sGroup1);
//分组字段名
String sGroupField1=root.getChildNodes().item(3).getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
//第二个分组
sGroup2=root.getChildNodes().item(4).getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
sGroup2=fcTrans(sGroup2);
String sGroupField2=root.getChildNodes().item(4).getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
String sTmp = "";
int iField=1;
int iCount=1;
String sGroupKey1=""; //保存分组字段的值
String sGroupKey2="";
String tmpsGroup="";
try {
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
String sConnStr = "jdbc:odbc:"+strDataSource;
Class.forName(sDBDriver);
Connection con1 = DriverManager.getConnection(sConnStr,strUserName,strPassword);
Connection con2 = DriverManager.getConnection(sConnStr,strUserName,strPassword);
/**
注:当改动数据库连接时应将下面的con1和con2改为con,同时去掉上面5行.
*/
\ Statement stmt1 = con1.createStatement();
Statement stmt2 = con2.createStatement();
rs1 = stmt1.executeQuery(sGroup1);
ResultSetMetaData rsmd1=rs1.getMetaData();
while (rs1.next()) {
//strX="";
//strX1="";
sGroupKey1=rs1.getString(1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -