⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shangobject.java

📁 (Java+SQL)-大型企业JAVA的ERP系统
💻 JAVA
字号:

// 1. 统一查询,删除,修改,接口
// 2。统一中文处理

package src.com;

import java.sql.*;
import java.io.*;
import java.text.DateFormat;
import java.util.*;
import java.math.BigDecimal;

public class ShangObject
{
public Connection conn; // 连接
public ResultSet rs; // 分页查寻用的rs

public String primarykey1Name; // 主键1
public int primarykey1Type; // 0: 整数 ; 1: 字符串
public String primarykey2Name; // 主键2
public int primarykey2Type; // 0: 整数 ; 1: 字符串
public String viewName;  // 对应的表名
public String tableName; // 分页查询时对应的表名或视图名,

public String orderBy;      //分页查询时排序字段
public String whereClause; // 分页查询时的查询条件

public  int recordNum; 	// 查询结果的数目
public  int numInOnePager;  // 每一页显示的数目
public  int listPosition=0;      //记录当前显示位置,第一页为0,第n页为(n-1)*queryClient.getNumInOnePage()
public  int totalPage=1;    // 总页数
public  int curPage=0;     // 当前页
public  int state=0;
public boolean debug=true;

public MyGlobal theGlobal;

public void setGlobal(MyGlobal theGlobal){
	this.theGlobal = theGlobal;
  }



public int getNumInOnePage() {
	return numInOnePager;
}


public int getRecordNum() {
	return recordNum;
}

public int getTotalPage(){
	return totalPage;
}

public int getCurPage(){
	return curPage;
}	

public void setRecordNum(int aRecordNum){
	recordNum = aRecordNum;
}


public void setTotalPage(){
	totalPage=(int)((recordNum-1)/numInOnePager)+1;	        
	if (recordNum<=numInOnePager){
	      state=0;
	   }
	   else{ 
	      state=2;
	     }
}


/**
具体的查询处理(构造查询where子句),需要重载, 返回whereClause
*/
    String getWhereClause(javax.servlet.ServletRequest request) {
    	return "";
    }

/** 
增加一个查询的条件, 构造whereClause, 返回构造的新的whereClause
*/
 public String addWhereClause(String whereClause,   // 输入的已有的whereClause
    			String colName,        // 数据库的列名
    			String operator,       // 条件操作符号 >, < , like 
    			String fix,            // 引号 或 空 "'" , ""
    			String colValue) {     // 值
    	if( (colValue == null) || ( colValue.equals("")) )  // 未输入
		return whereClause;
    	if(fix.equals("'")){   // 字符型
		try {
	    		colValue = new String(colValue.getBytes("8859_1"));
		} catch(java.io.UnsupportedEncodingException e) {
			System.out.println("Baseservlet addWhereClause() : 编码不支持!!");
		}
	}
    	if( whereClause.equals("") == false) whereClause = whereClause + " and ";
    	if(operator.equals("like"))
		whereClause = whereClause + "(" + colName + " " + operator + " " + fix + "%" + colValue + "%" + fix  + ")";
	else
		whereClause = whereClause + "(" + colName + " " + operator + " " + fix + colValue + fix  + ")";
    	return whereClause;
    }

	 
public ShangObject(){
	primarykey1Name = ""; 
	primarykey1Type = 0; // 整数
	primarykey2Name = ""; 
	primarykey2Type = 0; // 整数
	tableName = "";  
	viewName = "";
	connectDB();
}

/** !!! 请重载 */
public int loadAttr() {
	return 1;
}

/** !!! 请重载 */
public int update()
{
	return 1;
}

/** !!! 请重载 */
public int insert() 
{
	return 1;
}

/** !!! 请重载 */

public int delete() {
	return -1;
}

/** !!! 请重载 */
public int delete(String primarykey1){
	try
	{
		String sqlStmt;
		Statement stmt = conn.createStatement();
		sqlStmt = "delete from " + tableName + "where " + primarykey1Name 
				+ "= '" + primarykey1 + "'" ;
		return stmt.executeUpdate(sqlStmt);
	} catch(SQLException e)
	{
		e.printStackTrace();
		return -1;
	}
}



public int load(String primarykey1) {
	int rtCode;
	String whereClause;
	if (primarykey1Type == 1 ) // Type is String
		whereClause = "(" + primarykey1Name + " = '" + primarykey1 + "') ";
	else
		whereClause = "(" + primarykey1Name + " = " + primarykey1 + ") ";
	rtCode = query( whereClause , "");
	if ( rtCode < 0 ) return -1;
	if ( rtCode == 0 ) return 0; // 
	if ( next() == -1 ) return -1;
	return 1;  // 成功
}

public int load(String primarykey1,String primarykey2) {
	int rtCode;
	String whereClause;	
	if (primarykey1Type == 1 ) // Type is String
		whereClause = "(" + primarykey1Name + " = '" + primarykey1 + "') ";	
	else
		whereClause = "(" + primarykey1Name + " = " + primarykey1 + ") ";

	if (primarykey2Type == 1 ) // Type is String
		whereClause = whereClause+"and "+"(" + primarykey2Name + " = '" + primarykey2 + "') ";
	else
		whereClause =  whereClause+"and"+"(" + primarykey2Name + " = " + primarykey2 + ")";

	rtCode = query( whereClause , "");
	if ( rtCode < 0 ) return -1;
	if ( rtCode == 0 ) return 0; // 
	if ( next() == -1 ) return -1;
	return 1;  // 成功
}

public int getQueryCount(String whereClause) {
	try
	{	
		Statement countStmt = conn.createStatement();
   		String sqlStmt;
   		sqlStmt = "select count(*) QueryCount from " + viewName ;
		if ( (whereClause != null) && (whereClause.equals("") == false) )
			sqlStmt = sqlStmt + " where " + whereClause;
		print(sqlStmt);
		ResultSet lRs=countStmt.executeQuery(sqlStmt);
        	lRs.next() ;
	        int queryCount = lRs.getInt("QueryCount");
	    	lRs.close();
	    	return queryCount;
	}
	catch(SQLException e)
	{
		e.printStackTrace();
   		return -1;
   	}
}

// 返回 行数 请重载
public int query(String whereClause, String orderBy) {
	this.whereClause = whereClause;
	this.orderBy = orderBy;
   	try {   
   		int rowCount = getQueryCount(whereClause);
   		print("rowCount== "+rowCount);
   		if (rowCount == -1)
   			return -1;

   		String sqlStmt;
   		sqlStmt = "select * from " + viewName;
		if ( (whereClause != null) && (whereClause.equals("") == false) )
			sqlStmt = sqlStmt + " where " + whereClause;

   		if ( orderBy.equals("") == false)
			sqlStmt = sqlStmt + " order by " + orderBy;
   		Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
   		rs = stmt.executeQuery(sqlStmt) ;
	        print(whereClause);
   		return rowCount;
   	} catch(SQLException e) {
   		System.out.println(e.getMessage());
   		e.printStackTrace();
   		return(-1);
   	} catch(Exception e) {
   		System.out.println("Exception ="+ e.getMessage());
   		e.printStackTrace();
   		return(-1);
   	}
}

public int query(String whereClause, String orderBy, String computeBy, String computeFomula) {
	this.whereClause = whereClause;
	this.orderBy = orderBy;
   	try {   
   		int rowCount = getQueryCount(whereClause);
   		print("rowCount== "+rowCount);
   		if (rowCount == -1)
   			return -1;

   		String sqlStmt;
   		sqlStmt = "select * from " + viewName;
		if ( (whereClause != null) && (whereClause.equals("") == false) )
			sqlStmt = sqlStmt + " where " + whereClause;

   		if ( orderBy.equals("") == false)
			sqlStmt = sqlStmt + " order by " + orderBy;

   		if ( computeBy.equals("") == false)
			sqlStmt = sqlStmt + " compute " + computeFomula + " by " + computeBy;

   		Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
   		rs = stmt.executeQuery(sqlStmt) ;
	        print(whereClause);
   		return rowCount;
   	} catch(SQLException e) {
   		System.out.println(e.getMessage());
   		e.printStackTrace();
   		return(-1);
   	} catch(Exception e) {
   		System.out.println("Exception ="+ e.getMessage());
   		e.printStackTrace();
   		return(-1);
   	}
}


public void connectDB() { // 连接数据库
  try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        conn = DriverManager.getConnection("jdbc:odbc:wuyang", "sa", "");
	print("connect ok");
  }catch(Exception e) {
  	System.out.println("dbconnection failed.");
  }
}


/** 
query后load前一个对象的属性
返回是否到最前一个
1 : 否到最前一个
0 : 到最前一个
-1 : 数据库错
*/
public int previous(){
	return previous(true);
}

public int previous(boolean loadAttribute) {
	try {
		if ( rs.previous() ) {
			if (loadAttribute)
				loadAttr();
			return 1;
		}
		return 0;
	}catch (SQLException e)	{
		e.printStackTrace();
		return -1;
	}
}

/** 
query后load前一个对象的属性
返回是否到最前一个
*/
public int first() {
	return first(true);
}

public int first(boolean loadAttribute) {
	try{
		if ( rs.first() ) {
			if (loadAttribute)
				loadAttr();
			return 1;
		}
		return 0;
	}catch (SQLException e)	{
		e.printStackTrace();
		return -1;
	}
}

/**
query后load后一个对象的属性
返回是否到最后一个
*/
public int next() {
	return next(true);
}

public int next(boolean loadAttribute) {
	try{
		if ( rs.next() ) {
			if (loadAttribute)
				loadAttr();
			return 1;
		}
		return 0;
	}catch (SQLException e)	{
		e.printStackTrace();
		return -1;
	}
}

/**
query后load最后一个对象的属性
返回是否到最后一个
*/
public int last() {
	return last(true);
}

public int last(boolean loadAttribute) {
	try{
		if ( rs.last() ) {
			if (loadAttribute)
				loadAttr();
			return 1;
		}
		return 0;
	}catch (SQLException e)	{
		e.printStackTrace();
		return -1;
	}
}

/**
用于分页显示, 处理如下操作:
next , previous
*/
public int listPage(javax.servlet.ServletRequest request) {
   
   String browseMode = (String) request.getParameter("browseMode");
   String position = (String) request.getParameter("position");
   	listPosition = (new Integer(position)).intValue();
   String curentPage = (String) request.getParameter("curPage");
   	curPage = (new Integer(curentPage)).intValue();	
   	
   	if(browseMode.equals("first")){
   		curPage = 1;
   		listPosition = 0;
   		}
   	if(browseMode.equals("next")){         					 /*下翻页*/
	 		   curPage=curPage+1;
			   listPosition=listPosition+numInOnePager;
			   if( (listPosition+numInOnePager)>=recordNum ){
			       state=-1;
			   }else{ 
			       state=1;
			   }
	 	} 
	 	
	 if(browseMode.equals("previous")) {                               /*上翻页*/
	 		curPage=curPage-1;
			listPosition=listPosition-numInOnePager;
			   if (listPosition==0){
			       state=2;
			  } else {
			   	state=1;
			   }
	 	} 

 	first(false);
 	previous(false);	
									/*重新定位*/
   	for (int index = 0; index < listPosition; index++) {
   		next(false);
   	}

	return 1;
}


/** 
中文处理专用, 代替 PreparedStatement::getString(String str)
*/

public String getRsString(ResultSet rs, String name)
{
//InputStream is;
//int len;
	String str;
	try {
		if (name == null) return "";
		str = rs.getString(name); 		
		if(str != null)	  
			str = new String(str.getBytes(),"8859_1" );	
		else
			str = "";			
		return str;
	} catch (Exception e ) {
		e.printStackTrace();
		return "";
	}
}

public String getChnString(String name)
	{
	String str;
	try 	{
		if (name == null) return "";
		name = new String(name.getBytes(),"8859_1" );	
		return name;
		} 
	catch (Exception e ) 
		{
		e.printStackTrace();
		return "";
		}
	}

/** 
中文处理专用, 代替 PreparedStatement::setString(int parameterIndex, String str)
*/
public void setStmtString(PreparedStatement stmt, int parameterIndex, String str) throws SQLException
{
	byte[] b;

	if (str == null)
		stmt.setString(parameterIndex, null);
	else
	{
		b = str.getBytes();
		stmt.setAsciiStream(parameterIndex, (new ByteArrayInputStream(b)) , b.length); // ok
	}
}

/** 
中文字串处理专用, 在javabean中的 public void setXXXX(String aXXXX) 的中文处理可用以下形式:(例)
   {
      checkDocId = setChnString(aCheckDocId);
   }

*/
	public String setChnString(String name) 	//中文输入处理
		{
		try 	{
			String chnstr;                                                             
			if(name== null)
				{ 
				return "";
				}
			else	{
				chnstr = new String(name.getBytes("8859_1"));
				}
			return chnstr;               
			} 
		catch (UnsupportedEncodingException e)
			{
			}
		return "";
		}

/**
用于将从页面读进来的年、月、日转化为一个Date对象,并且在输入为空字符串时转化为1900-0-0
*/
public java.sql.Timestamp stringToDate(String _year,String _month,String _day) {
	
	java.sql.Timestamp adate;
	Integer transferDate1;
	Integer transferDate2;
	Integer transferDate3;
	int year,month,day;
	Calendar  calendar1 = null;//日期

       	calendar1 = Calendar.getInstance();
       	if( (_year == null) || (_month == null) || (_day == null) )return null;
	if( !_year.equals("") || !_month.equals("") ) 
	{
		transferDate1 = new Integer(_year);
		year = transferDate1.intValue();
		transferDate2 = new Integer(_month);
		month = transferDate2.intValue();
		transferDate3 = new Integer(_day);
		day = transferDate3.intValue();
		adate = new java.sql.Timestamp((year-1900),month-1,day,0,0,0,0);
		//calendar1.set(year, month, day );
		//adate = calendar1.getTime();
	} else
	{
		adate = null;
	}
	//返回一个日期
	return adate;
    }

// 格式化返回Date
public String getStringDate(java.util.Date dt , int datePart) {

        String strDate;
        Calendar  calendar1 = null;//日期
        
        if(dt == null) return "";
       	calendar1 = Calendar.getInstance();
        calendar1.setTime(dt);
        switch(datePart){
            case 0: // 返回YYYY-MM-DD格式
            	strDate = "" + calendar1.get(Calendar.YEAR) + "-" + 
            		(calendar1.get(Calendar.MONTH) + 1) + "-" + 
            		calendar1.get(Calendar.DAY_OF_MONTH);
            	break;
       	    case 1: // 返回年
       	    	strDate = calendar1.get(Calendar.YEAR) + ""; 
       	    	break;  	
	    case 2: // 返回月
	    	strDate = calendar1.get(Calendar.MONTH) + 1 + "";
	    	break;
	    case 3: // 返回日
	    	strDate = calendar1.get(Calendar.DAY_OF_MONTH) + "";
	    	break;
            default:
            	strDate = "";
         }
	//返回一个日期String
	return strDate;
}

public java.sql.Timestamp getCurDate() {
    Calendar  calendar1 = null;
    calendar1 = Calendar.getInstance();
    java.util.Date trialTime = new java.util.Date();
    calendar1.setTime(trialTime);
    return (new Timestamp( calendar1.get(Calendar.YEAR) - 1900
    			, calendar1.get(Calendar.MONTH)
    			, calendar1.get(Calendar.DAY_OF_MONTH),0,0,0,0 ));
}
 

public void print(String s){
	if(debug){
		System.out.println(s);
	}
		
}


public void setDebug(boolean state){
	debug = state;
}	

public String doubleFormat(double number1,int per)
   {
	BigDecimal num1=new BigDecimal(number1);
	num1 = num1.setScale(per,5);
	return num1.toString();
   }



}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -