www.pudn.com > 使用 Java 读取条形码代码文件.rar > DatabaseAccess.java, change:2002-06-02,size:7316b


package com.jmart.dbaccess; 
 
import com.jmart.*; 
import com.jmart.data.*; 
import java.sql.*; 
import java.util.*; 
import java.io.*; 
 
public class DatabaseAccess  
{ 
	private DatabaseAccess databaseAccess; 
	private String userName; 
	private String password; 
	private String schemaName; 
	private String databaseName; 
	 
/** 
 *  
 */ 
public DatabaseAccess() { 
	super(); 
} 
/** 
 *  
 * @param data com.jmart.InventoryData 
 */ 
 
// reads item # and manufacturer # from incoming object and removes corresponding record from db if it exists 
 	 
public boolean delInventory(InventoryData data) 
{ 
	Database db = null; 
	boolean deleteProgress = false; 
	grabDBproperties(); 
	try 
	{ 
		db = new Database(userName,password,databaseName); 
		// make sure a record does exist 
		String dbStatement = "select count(*) from " + schemaName  +".POSTABLE where itemnumber = " + Integer.parseInt(data.getItemNumber()) 
			+ " and manufacturerNumber = " + Integer.parseInt(data.getManufacturerNumber()); 
		ResultSet rs = db.executeQuery(dbStatement); 
		rs.next(); 
		if (rs.getInt(1)>=1) 
		{ 
			dbStatement = "delete from " + schemaName + ".POSTABLE where itemnumber = " + data.getItemNumber()  
				+ " and manufacturerNumber = " + Integer.parseInt(data.getManufacturerNumber()); 
			int accomplished = db.executeUpdate(dbStatement); 
			if (accomplished == 1) deleteProgress = true; 
		} 
		else return false; 
	} 
	catch (Exception e) 
	{ 
		System.out.println("An error has occurred: " + e); 
	} 
	finally 
	{ 
		db.close(); 
	} 
	return deleteProgress; 
} 
/** 
 * Insert the method's description here. 
 * Creation date: (5/25/2002 3:41:28 PM) 
 */ 
public void grabDBproperties()  
{ 
	Properties dbProps = new Properties(); 
	try 
	{ 
		FileInputStream in = new FileInputStream("db.ini"); 
		dbProps.load(in); 
		in.close(); 
	} 
	catch (Exception e) 
	{ 
		System.out.println("There was a problem reading the ini file."); 
	} 
 
	userName = dbProps.getProperty("userName"); 
	password = dbProps.getProperty("password"); 
	schemaName = dbProps.getProperty("schemaName"); 
	databaseName = dbProps.getProperty("databaseName"); 
 
} 
/** 
 * Insert the method's description here. 
 * Creation date: (5/11/2002 1:12:19 AM) 
 * @param args java.lang.String[] 
 */ 
public static void main(String[] args)  
{ 
	try 
	{ 
		InventoryData data = new InventoryData(); 
		DatabaseAccess dummy = new DatabaseAccess(); 
		 
		boolean test = dummy.updInventory(data); 
		System.out.println(test); 
		 
		//boolean test = dummy.delInventory(data); 
		 
		 
		data.setItemNumber("344356"); 
		data.setManufacturerNumber("34347"); 
		 
		//data = dummy.delInventory(data); 
		System.out.println(dummy.delInventory(data)); 
		//System.out.println(data.getQuantity()); 
	} 
	catch(Exception e) 
	{ 
		System.out.println(e); 
	} 
} 
/** 
 * 
 * @return com.jmart.InventoryData 
 * @param data com.jmart.InventoryData 
 */ 
 
 // reads out the item number and manufacturer number and returns 
 // the matching data object, setting property recordFound to true; 
 // if no object is found in DB, recordFound in InventoryData object is set to false  
 // with the item number and manufacturer name still in the object  
  
public InventoryData qryInventory(InventoryData data)  
{ 
	Database db = null; 
	grabDBproperties(); 
	// following is for testing only 
	/*data.setItemNumber("344356"); 
	/data.setManufacturerNumber("34345");*/ 
	// end testing code 
	try 
	{ 
		db = new Database(userName,password,databaseName); 
		String dbStatement = "select count(*) from "+ schemaName + ".POSTABLE where itemnumber = " + Integer.parseInt(data.getItemNumber()) 
			+ " and manufacturerNumber = " + Integer.parseInt(data.getManufacturerNumber()); 
		ResultSet rs = db.executeQuery(dbStatement); 
		rs.next(); 
		// case record exists 
		if (rs.getInt(1)>=1) 
		{ 
		 
			dbStatement = "SELECT * FROM " + schemaName + ".POSTABLE WHERE ITEMNUMBER =" + Integer.parseInt(data.getItemNumber()) + " AND "  
				+ " MANUFACTURERNUMBER = " + Integer.parseInt(data.getManufacturerNumber()); 
			rs = db.executeQuery(dbStatement); 
			data.setRecordFound(true); 
			rs.next(); 
 
			data.setManufacturerNumber(rs.getString("MANUFACTURERNUMBER")); 
			data.setItemNumber(rs.getString("ITEMNUMBER")); 
			data.setManufacturerName(rs.getString("MANUFACTURERNAME")); 
			data.setPrice(rs.getBigDecimal("PRICE", 2)); 
			data.setQuantity(rs.getInt("QUANTITY")); 
			data.setName(rs.getString("NAME")); 
		} 
		else data.setRecordFound(false); 
	} 
	catch (Exception e) 
	{ 
		System.out.println("An error has occurred: " + e); 
	} 
	 
	finally 
	{ 
		db.close(); 
	} 
	return data; 
} 
/** 
 *  
 * @param data com.jmart.InventoryData 
 */ 
public boolean updInventory(InventoryData data) 
{ 
	 
	// update the quantity of the item with matching item number and 
	// manufacturer number with the quantity being either positive or negative 
	Database db = null; 
	grabDBproperties(); 
	 
	// following is for testing only 
	 
	/*data.setItemNumber("344356"); 
	data.setManufacturerNumber("34346"); 
	data.setManufacturerName("Fritolay"); 
	data.setQuantity(60); 
	data.setName("BogusName"); 
	data.setPrice(new java.math.BigDecimal("23.32"));*/ 
	 
	//end testing code 
	 
	boolean updateProgress=false; 
	String dbStatement; 
	 
	 
	try 
	{ 
		db = new Database(userName,password,databaseName); 
		dbStatement = "SELECT COUNT(*) FROM " + schemaName + ".POSTABLE WHERE ITEMNUMBER =" + Integer.parseInt(data.getItemNumber()) + " AND "  
			+ " MANUFACTURERNUMBER = " + Integer.parseInt(data.getManufacturerNumber()); 
		ResultSet results = db.executeQuery(dbStatement); 
		results.next(); 
		int count = results.getInt(1); 
		// add item to database 
		if (count==0) 
		{ 
			// add item given incoming quantity is greater than 0 
			if (data.getQuantity()>0) 
			{ 
				dbStatement = "INSERT INTO " + schemaName + ".POSTABLE VALUES(" + Integer.parseInt(data.getItemNumber()) + "," + Integer.parseInt(data.getManufacturerNumber()) 
				+ ",'" + data.getName() +  "','" + data.getManufacturerName() + "'," + data.getQuantity()  
				+ "," + data.getPrice() + ")"; 
				int accomplished = db.executeUpdate(dbStatement); 
				if (accomplished==1) updateProgress=true; 
			} 
		} 
		// update item in database 
		else  
		{ 
			dbStatement = "SELECT QUANTITY FROM " + schemaName + ".POSTABLE WHERE ITEMNUMBER =" + Integer.parseInt(data.getItemNumber()) + " AND "  
				+ " MANUFACTURERNUMBER = " + Integer.parseInt(data.getManufacturerNumber()); 
			results = db.executeQuery(dbStatement); 
			results.next(); 
			int currentQuantity=results.getInt(1); 
			int desiredQuantity=currentQuantity+data.getQuantity(); 
			// make sure desired quantity is not negative before performing update 
			if (desiredQuantity>=0) 
			{ 
			 
				dbStatement = "UPDATE " + schemaName + ".POSTABLE SET QUANTITY =" + desiredQuantity 
					+ " WHERE ITEMNUMBER =" + Integer.parseInt(data.getItemNumber()) + " AND "  
					+ " MANUFACTURERNUMBER = " + Integer.parseInt(data.getManufacturerNumber()); 
				int accomplished = db.executeUpdate(dbStatement); 
				if (accomplished==1) updateProgress=true; 
			} 
		}	 
	} 
	catch (Exception e) 
	{ 
		System.out.println("A problem has occured: " + e); 
	} 
	finally 
	{ 
		db.close(); 
	} 
	return updateProgress; 
} 
}