Reputation: 21
I am creating an address book application, and I am working on the search function. Whenever I search I get a "Column not found" exception. Here is my code:
else if(actionCommand.contentEquals("search"))
{
String searchInput = searchBar.getText();
//String[] searchSplit = searchInput.split("\\s");
//String searchFirst = searchSplit[0];
//String searchLast = searchSplit[1];
personID = null;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection connection = DriverManager.getConnection("jdbc:odbc:address_book");
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT (personID) FROM names WHERE (lastName) LIKE ('"+searchInput+"')");
if(resultSet.next())
personID = resultSet.getString("personID");
ResultSet firstQuery = statement.executeQuery("SELECT (firstName) FROM names WHERE (personID) LIKE ('"+personID+"')");
if(firstQuery.next())
firstNameOutput = firstQuery.getString("firstName");
ResultSet lastQuery = statement.executeQuery("SELECT (lastName) FROM names WHERE (personID) LIKE ('"+personID+"')");
if(lastQuery.next())
lastNameOutput = lastQuery.getString("lastName");
ResultSet address1Query = statement.executeQuery("SELECT (address1) FROM addresses WHERE (personID) LIKE ('"+personID+"')");
if(address1Query.next())
address1Output = address1Query.getString("address1");
ResultSet address2Query = statement.executeQuery("SELECT (address2) FROM addresses WHERE (personID) LIKE ('"+personID+"')");
if(address2Query.next())
address2Output = address2Query.getString("address1");
ResultSet cityQuery = statement.executeQuery("SELECT (city) FROM addresses WHERE (personID) LIKE ('"+personID+"')");
if(cityQuery.next())
cityOutput = cityQuery.getString("city");
ResultSet stateQuery = statement.executeQuery("SELECT (state) FROM addresses WHERE (personID) LIKE ('"+personID+"')");
if(stateQuery.next())
stateOutput = stateQuery.getString("state");
ResultSet zipcodeQuery = statement.executeQuery("SELECT (zipcode) FROM addresses WHERE (personID) LIKE ('"+personID+"')");
if(zipcodeQuery.next())
zipcodeOutput = zipcodeQuery.getString("zipcode");
ResultSet phoneQuery = statement.executeQuery("SELECT (phoneNumber) FROM phoneNumbers WHERE (personID) LIKE ('"+personID+"')");
if(phoneQuery.next())
phoneOutput = phoneQuery.getString("phoneNumber");
ResultSet emailQuery = statement.executeQuery("SELECT (emailAddress) FROM emailAddresses WHERE (personID) LIKE ('"+personID+"')");
if(emailQuery.next())
emailOutput = emailQuery.getString("emailAddress");
newFunctionWindow();
personIDBar.setText(personID);
firstNameBar.setText(firstNameOutput);
lastNameBar.setText(lastNameOutput);
address1Bar.setText(address1Output);
address2Bar.setText(address2Output);
cityBar.setText(cityOutput);
stateBar.setText(stateOutput);
zipcodeBar.setText(zipcodeOutput);
phoneBar.setText(phoneOutput);
emailBar.setText(emailOutput);
statement.close();
connection.close();
}
catch (SQLException sqlException)
{
JOptionPane.showMessageDialog(null, sqlException.getMessage(), "Database Error", JOptionPane.ERROR_MESSAGE);
System.exit(1);
}
catch (ClassNotFoundException classNotFound)
{
JOptionPane.showMessageDialog(null, classNotFound.getMessage(), "Driver Not Found", JOptionPane.ERROR_MESSAGE);
System.exit(1);
}
I triple checked all of the column names and there are no typos. I believe all my SQL statements are correct as well, so I am not quite sure what the issue is! Thank you for your help.
Upvotes: 0
Views: 159
Reputation: 11084
ResultSet address1Query = statement.executeQuery("SELECT (address1) FROM addresses WHERE (personID) LIKE ('"+personID+"')");
if(address1Query.next())
address1Output = address1Query.getString("address1");
ResultSet address2Query = statement.executeQuery("SELECT (address2) FROM addresses WHERE (personID) LIKE ('"+personID+"')");
if(address2Query.next())
address2Output = address2Query.getString("address1");
Whoops - address1 from the address2 field? That won't work. (last line quoted)
Upvotes: 2