我正在制作一个程序,可以从我创建的数据库中检索字段的输入数据/值。但是,当我运行它时,输出始终为null。不知道怎么了 这是我的代码:
import java.sql.*; public class GuestsInfo { private String firstName, lastName; private int age; private Connection con; private PreparedStatement statement; public GuestsInfo() { try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/3moronsdb","root",""); } catch (Exception e) { e.printStackTrace(); } } public GuestsInfo(String firstName, String lastName, int age) { this(); try { statement = con.prepareStatement("Insert into guest(firstName,lastName,age)values(?,?,?)"); statement.setString(1, firstName); statement.setString(2, lastName); statement.setInt(3, age); statement.executeUpdate(); con.close(); } catch(Exception e) { e.printStackTrace(); return; } } public void setFirstName(String firstName) { try{ statement= con.prepareStatement("SELECT * FROM guest WHERE firstName = ?"); statement.setString(1, firstName); ResultSet rs = statement.executeQuery(); while(rs.next()){ firstName = rs.getString(1); } }catch(Exception e){ System.out.print(e); } } public String getFirstName(){ return firstName; } public void setLastName(String lastName) { try{ statement= con.prepareStatement("SELECT * FROM guest WHERE lastName = ?"); statement.setString(2, lastName); ResultSet rs = statement.executeQuery(); while(rs.next()){ lastName = rs.getString(2); } }catch(Exception e){ System.out.print(e); } } public String getLastName(){ return lastName; } public void setAge(int age){ try{ statement = con.prepareStatement("SELECT * FROM guest WHERE age=?"); statement.setInt(3, age); ResultSet rs = statement.executeQuery(); while(rs.next()){ age = rs.getInt(3); } }catch(Exception e){ System.out.print(e); } } public int getAge(){ return age; }
在我的主班我有以下代码:
public class TestMain { public static void main(String [] args){ GuestsInfo gi = new GuestsInfo(); gi.setFirstName("Ericka"); System.out.println(gi.getFirstName()); } }
我不知道为什么我运行它时总是说null。
您实际上并没有在设置员中“设置”任何东西。
public void setFirstName(String firstName) { try{ // Here you create a READing statement. statement= con.prepareStatement("SELECT * FROM guest WHERE firstName = ?"); statement.setString(1, firstName); ResultSet rs = statement.executeQuery(); while(rs.next()){ // Here you set the >>method param<< to a non-existing String firstName = rs.getString(1); } }catch(Exception e){ System.out.print(e); } } // After the method is done you have done nothing because you didn't even set your class member variable "firstName", which you would have set using "this.firstName".
最重要的是:我对getter和setter的理解使您可以在getter中进行查询。