我正在开发一个具有MySQL访问权限的GUI应用程序。当用户在JTextField' VendorID'中输入一些数据时,我希望在数据库中搜索它,找到包含信息的正确行,并单独显示其他JtextFields中的所有列。实际上我希望这些数据在JLabel中显示但不成功,所以现在尝试使用JtextFields。感谢您的任何帮助。
public void findVendor() {
String vatEntered = vendorID.getText();
try
{
String myDriver = "com.mysql.jdbc.Driver";
String myUrl = "jdbc:mysql://localhost:3306/masterdata_db?autoReconnect=true&useSSL=false";
Class.forName(myDriver);
Connection conn = DriverManager.getConnection(myUrl, "root", "");
Statement st = conn.createStatement();
String check = "SELECT * FROM vendorcreation WHERE VAT = 'vatEntered' ";
ResultSet resultSet = st.executeQuery(check);
boolean status = true;
if(resultSet.next()==status){
nameSelected.setText(resultSet.getString(1));
adressSelected.setText(resultSet.getString(2));
countrySelected.setText(resultSet.getString(3));
vatSelected.setText(resultSet.getString(4));
ptermsSelected.setText(resultSet.getString(5));
conn.close();
}
else {
JOptionPane.showMessageDialog(null, "NO DATA FOUND! FIRST YOU MUST CREATE IT", "Inane error",JOptionPane.ERROR_MESSAGE);
dispose();
new CreateVendor().setVisible(true);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
答案 0 :(得分:0)
根据我的理解,您在执行声明时遇到了问题? 您需要将语句设置如下:
String check = "SELECT * FROM vendorcreation WHERE VAT = " +vatEntered ;
但最好是使用预备语句。
String check = "SELECT * FROM vendorcreation WHERE VAT = ?";
PreparedStatement st = conn.prepareStatement(check);
st.setString(1, vatEntered);
ResultSet resultSet = st.executeQuery();
对于数据分类,顺序似乎取决于列在数据库中的顺序。您还可以通过更改语句手动设置结果:
String check = "SELECT (column1, column2) FROM vendorcreation WHERE VAT = ?"//etc
其中resultSet.getString(1);
是来自column1的数据。