我使用插入,更新,删除,搜索和打印功能创建了一个AddressBook GUI应用程序。它连接到我的访问数据库表,其中包含四个表(名称,地址,phoneNumbers和emailAddresses)
到目前为止一切正常,除非我尝试搜索刚插入表中的新输入。如果我搜索直接放入访问的记录,它就可以工作。
我认为我缩小了问题,但不知道如何修复它。当我将新记录插入到我的表中时,names表为该记录创建一个新的主键,但其余的表没有,它们只创建一个新的外键号。由于我的搜索基于内部加入id我猜我的问题就在这里,但我不确定。
这是我的搜索代码
if (e.getActionCommand().equals("Search")){
JFrame mini = new JFrame();
// Gets user input. If user presses Cancel, 'name' will be null
String first = JOptionPane.showInputDialog(mini,"Enter first name:");
String last = JOptionPane.showInputDialog(mini, "Enter last name:");
try{
resultSet = statement.executeQuery( "SELECT * FROM ((names INNER JOIN addresses
ON names.personID = addresses.addressID)INNER JOIN phoneNumbers
ON names.personID = phoneNumbers.phoneID) INNER JOIN emailAddresses
ON names.personID = emailAddresses.emailID
WHERE lastName LIKE '%" + last + "%' AND firstName LIKE '%" + first+"%'");
resultSet.next();
jTextField1.setText(resultSet.getString("firstName"));
jTextField2.setText(resultSet.getString("lastName"));
jTextField3.setText(resultSet.getString("address1"));
jTextField4.setText(resultSet.getString("address2"));
jTextField5.setText(resultSet.getString("city"));
jTextField6.setText(resultSet.getString("state"));
jTextField7.setText(resultSet.getString("zipcode"));
jTextField8.setText(resultSet.getString("phoneNumber"));
jTextField9.setText(resultSet.getString("emailAddress"));
jTextField10.setText(resultSet.getString("personID"));
jTextField10.setEditable(false);
} catch(SQLException sqlException) {
JOptionPane.showMessageDialog(null, sqlException.getMessage(), "Error",
JOptionPane.ERROR_MESSAGE);
}
}
答案 0 :(得分:0)
访问使用*
作为通配符,而不是%