Java 如何使用从文本字段获得的特定名称查询多个表?
我试图查询一个包含名称的文本字段,文本框是RegName,我想从一个MySQL数据库中获取名称并选择信息,该数据库有5个表,每个表都有一个与单个狗相关的字段DogId。我想用文本字段中的名称获取狗的信息。然后我用从查询中获得的信息填写文本字段。我的问题似乎是select语句的最后两行(来自doginfo) 其中RegName='“+dn+”); 同样,RegName是带有我要查找的名称的文本字段。我已经尝试了我能想到的一切,并且花了几天时间寻找答案。任何帮助都将不胜感激 这是我的密码Java 如何使用从文本字段获得的特定名称查询多个表?,java,mysql,Java,Mysql,我试图查询一个包含名称的文本字段,文本框是RegName,我想从一个MySQL数据库中获取名称并选择信息,该数据库有5个表,每个表都有一个与单个狗相关的字段DogId。我想用文本字段中的名称获取狗的信息。然后我用从查询中获得的信息填写文本字段。我的问题似乎是select语句的最后两行(来自doginfo) 其中RegName='“+dn+”); 同样,RegName是带有我要查找的名称的文本字段。我已经尝试了我能想到的一切,并且花了几天时间寻找答案。任何帮助都将不胜感激 这是我的密码
// This is where we get the information on a dog based on its Name.
@FXML
private void querybyNameActionPerformed(ActionEvent event) {
// Query the db for record with dog name equal to the name in regName.
String user = "root";
String password = "";
String dn = null;
dn = RegName.getText().trim(); // dn = dog name.
try {
Connection myConn = DriverManager.getConnection("jdbc:mysql://localhost:3306/kennelmanagment1", user, password);
// Create statement.
Statement myStmt = myConn.createStatement();
// Execute query.
ResultSet myRs = myStmt.executeQuery("SELECT d.DogId, d.RegNum, d.RegName, d.WhelpDate, d.DNA, d.Notes, a.Breed, a.Sex, a.color, s.SireRegName, b.DamRegName, o.LastName, c.CoOwnerNames, o.Address1, o.Address2, o.City, o.State, o.Zip, o.Htel, o.Cell \n"
+ "FROM doginfo d LEFT JOIN dogat a \n"
+ "ON d.DogId = a.DogId \n"
+ "LEFT JOIN sires s \n"
+ "ON d.DogId = s.DogId \n"
+ "LEFT JOIN dams b \n"
+ "ON d.DogId = b.DogId\n"
+ "LEFT JOIN owners o\n"
+ "ON d.DogId = o.DogId\n"
+ "LEFT JOIN coowners c\n"
+ "ON d.DogId = c.DogId"
+" FROM doginfo"
+ "Where RegName = ' " +dn+ " '");
//System.out.println (dn);
// System.out.println ("SELECT * FROM doginfo WHERE Regname = '" + dn + " ' ");
// Process the result.
while (myRs.next ()) {
DogId.setText (myRs.getString("DogId"));
RegNum.setText (myRs.getString ("RegNum"));
RegName.setText(myRs.getString ("RegName"));
WhelpDate.setText (myRs.getString("WhelpDate"));
Breed.setText (myRs.getString ("breed"));
Sex.setText (myRs.getString ("sex"));
Color.setText (myRs.getString ("color"));
SireRegName.setText (myRs.getString ("SireRegName"));
DamRegName.setText (myRs.getString ("DamRegNName"));
Owner.setText (myRs.getString ("Owner"));
CoOwners.setText (myRs.getString("CoOwners"));
Address1.setText (myRs.getString ("Address1"));
Address2.setText (myRs.getString ("Addess2"));
City.setText (myRs.getString("City"));
State.setText (myRs.getString ("State"));
Zip.setText (myRs.getString ("Zip"));
DNA.setText (myRs.getString ("DNA"));
HTel.setText (myRs.getString ("HTel"));
Cell.setText (myRs.getString ("Cell"));
Notes.setText (myRs.getString ("Notes"));
}
} catch (Exception e) {
JOptionPane.showMessageDialog (null, "Error");
}
}
我认为你不需要第二行,因为你已经在第一行提到了表格。 尝试删除查询最后一行的“fromDogInfo”。
试着把它去掉,它就会起作用。举个例子会有帮助。我不知道如何让它更清楚。我想从一个文本字段中获取名称,并在数据库中搜索关于该名称的信息。一旦我获取了要将其放入文本字段的数据,我就无法获得select语句。这是我的错误消息(您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第11行“RegName=”Desiree“”附近使用的正确语法)我尝试删除您建议的行,但仍然出现相同的错误。这更适合作为注释。OP并没有给出他们试图做什么的清晰画面。迈克,很抱歉看到上面的评论。由于这是一个相当大的程序,我不确定如何给出一个例子。如上所述,我在使用select语句时遇到问题。如果多个表中存在列,则应在查询“something.Regname”名称中的列名之前指定别名。对不起,迈克!我是这个社区的新手。