📄 cloudscapedataaccess.java
字号:
// update emailAddresses table
sqlUpdateEmail.setString( 1, person.getEmailAddress() );
sqlUpdateEmail.setInt( 2, person.getEmailID() );
result = sqlUpdateEmail.executeUpdate();
// if update fails, rollback and discontinue
if ( result == 0 ) {
connection.rollback(); // rollback update
return false; // update unsuccessful
}
connection.commit(); // commit update
return true; // update successful
} // end try
// detect problems updating database
catch ( SQLException sqlException ) {
// rollback transaction
try {
connection.rollback(); // rollback update
return false; // update unsuccessful
}
// handle exception rolling back transaction
catch ( SQLException exception ) {
throw new DataAccessException( exception );
}
}
} // end method savePerson
// Insert new entry. Method returns boolean indicating
// success or failure.
public boolean newPerson( AddressBookEntry person )
throws DataAccessException
{
// insert person in database
try {
int result;
// insert first and last name in names table
sqlInsertName.setString( 1, person.getFirstName() );
sqlInsertName.setString( 2, person.getLastName() );
result = sqlInsertName.executeUpdate();
// if insert fails, rollback and discontinue
if ( result == 0 ) {
connection.rollback(); // rollback insert
return false; // insert unsuccessful
}
// determine new personID
ResultSet resultPersonID = sqlPersonID.executeQuery();
if ( resultPersonID.next() ) {
int personID = resultPersonID.getInt( 1 );
// insert address in addresses table
sqlInsertAddress.setInt( 1, personID );
sqlInsertAddress.setString( 2,
person.getAddress1() );
sqlInsertAddress.setString( 3,
person.getAddress2() );
sqlInsertAddress.setString( 4,
person.getCity() );
sqlInsertAddress.setString( 5,
person.getState() );
sqlInsertAddress.setString( 6,
person.getZipcode() );
result = sqlInsertAddress.executeUpdate();
// if insert fails, rollback and discontinue
if ( result == 0 ) {
connection.rollback(); // rollback insert
return false; // insert unsuccessful
}
// insert phone number in phoneNumbers table
sqlInsertPhone.setInt( 1, personID );
sqlInsertPhone.setString( 2,
person.getPhoneNumber() );
result = sqlInsertPhone.executeUpdate();
// if insert fails, rollback and discontinue
if ( result == 0 ) {
connection.rollback(); // rollback insert
return false; // insert unsuccessful
}
// insert email address in emailAddresses table
sqlInsertEmail.setInt( 1, personID );
sqlInsertEmail.setString( 2,
person.getEmailAddress() );
result = sqlInsertEmail.executeUpdate();
// if insert fails, rollback and discontinue
if ( result == 0 ) {
connection.rollback(); // rollback insert
return false; // insert unsuccessful
}
connection.commit(); // commit insert
return true; // insert successful
}
else
return false;
} // end try
// detect problems updating database
catch ( SQLException sqlException ) {
// rollback transaction
try {
connection.rollback(); // rollback update
return false; // update unsuccessful
}
// handle exception rolling back transaction
catch ( SQLException exception ) {
throw new DataAccessException( exception );
}
}
} // end method newPerson
// Delete an entry. Method returns boolean indicating
// success or failure.
public boolean deletePerson( AddressBookEntry person )
throws DataAccessException
{
// delete a person from database
try {
int result;
// delete address from addresses table
sqlDeleteAddress.setInt( 1, person.getPersonID() );
result = sqlDeleteAddress.executeUpdate();
// if delete fails, rollback and discontinue
if ( result == 0 ) {
connection.rollback(); // rollback delete
return false; // delete unsuccessful
}
// delete phone number from phoneNumbers table
sqlDeletePhone.setInt( 1, person.getPersonID() );
result = sqlDeletePhone.executeUpdate();
// if delete fails, rollback and discontinue
if ( result == 0 ) {
connection.rollback(); // rollback delete
return false; // delete unsuccessful
}
// delete email address from emailAddresses table
sqlDeleteEmail.setInt( 1, person.getPersonID() );
result = sqlDeleteEmail.executeUpdate();
// if delete fails, rollback and discontinue
if ( result == 0 ) {
connection.rollback(); // rollback delete
return false; // delete unsuccessful
}
// delete name from names table
sqlDeleteName.setInt( 1, person.getPersonID() );
result = sqlDeleteName.executeUpdate();
// if delete fails, rollback and discontinue
if ( result == 0 ) {
connection.rollback(); // rollback delete
return false; // delete unsuccessful
}
connection.commit(); // commit delete
return true; // delete successful
} // end try
// detect problems updating database
catch ( SQLException sqlException ) {
// rollback transaction
try {
connection.rollback(); // rollback update
return false; // update unsuccessful
}
// handle exception rolling back transaction
catch ( SQLException exception ) {
throw new DataAccessException( exception );
}
}
} // end method deletePerson
// method to close statements and database connection
public void close()
{
// close database connection
try {
sqlFind.close();
sqlPersonID.close();
sqlInsertName.close();
sqlInsertAddress.close();
sqlInsertPhone.close();
sqlInsertEmail.close();
sqlUpdateName.close();
sqlUpdateAddress.close();
sqlUpdatePhone.close();
sqlUpdateEmail.close();
sqlDeleteName.close();
sqlDeleteAddress.close();
sqlDeletePhone.close();
sqlDeleteEmail.close();
connection.close();
} // end try
// detect problems closing statements and connection
catch ( SQLException sqlException ) {
sqlException.printStackTrace();
}
} // end method close
// Method to clean up database connection. Provided in case
// CloudscapeDataAccess object is garbage collected.
protected void finalize()
{
close();
}
} // end class CloudscapeDataAccess
/**************************************************************************
* (C) Copyright 2001 by Deitel & Associates, Inc. and Prentice Hall. *
* All Rights Reserved. *
* *
* DISCLAIMER: The authors and publisher of this book have used their *
* best efforts in preparing the book. These efforts include the *
* development, research, and testing of the theories and programs *
* to determine their effectiveness. The authors and publisher make *
* no warranty of any kind, expressed or implied, with regard to these *
* programs or to the documentation contained in these books. The authors *
* and publisher shall not be liable in any event for incidental or *
* consequential damages in connection with, or arising out of, the *
* furnishing, performance, or use of these programs. *
*************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -