나는 다시 내가 만든 데이터베이스에서 필드의 입력 데이터/값을 검색 다른 프로그램을 제작하고있다. 하지만 이번에는 입력 한 값이 내가 만든 JtextField에서 올 것입니다. 여기에 무엇이 잘못되었는지 궁금해하는데, 출력 할 때 항상 null입니다.
이 프로그램에서 나는 입력 된 JTextField 값을 int로 변환합니다. 여기있다 : 내 두 번째 클래스
public class ButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == extendB)
{
ExtensionForm extend = new ExtensionForm();
extend.setVisible(true);
}
else if(e.getSource()== searchB)
{
//get text from the textField
String guest = guestIDTF.getText();
//parse the string to integer for retrieving of data
int id = Integer.parseInt(guest);
GuestsInfo guestInfo = new GuestsInfo(id);
Room roomInfo = new Room(id);
String labels[] = {guestInfo.getFirstName()+" "+guestInfo.getLastName(),""+roomInfo.getRoomNo(),roomInfo.getRoomType(),guestInfo.getTime(),"11:00"}; for(int z = 0; z<labels.length; z++) { labelDisplay[z].setText(labels[z]); }
그것이 내가 여기 을 만든 데이터베이스의 필드의 입력 값을 검색하는 코드이다 :. 수입 java.sql의 *;
공용 클래스 룸 {
private String roomType;
private int guestID, roomNo;
private Connection con;
private PreparedStatement statement;
public Room(){
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/3moronsdb","root","");
}
catch (Exception e) {
e.printStackTrace();
}
}
public Room(int guestsID)
{
this();
try{
statement = con.prepareStatement("SELECT * FROM guest WHERE guestID=?");
statement.setInt(1, guestID);
ResultSet rs = statement.executeQuery();
while(rs.next()){
this.guestID = rs.getInt(1);
this.roomType = rs.getString(2);
this.roomNo = rs.getInt(3);
}
}catch(Exception e){
System.out.print(e);
}
}
//Constructor for setting rate
public Room(String roomType, int roomNo)
{
this();
try
{
statement = con.prepareStatement("Insert into room(roomType, roomNo) values(?,?)");
statement.setString(1, roomType);
statement.setInt(2, roomNo);
statement.executeUpdate();
}
catch(Exception e)
{
e.printStackTrace();
return;
}
}
//getting roomType
public String getRoomType(){
return roomType;
}
//getting roomNo
public int getRoomNo(){
return roomNo;
}
//getting guestID
public int getGuestId(){
return guestID;
}
}
나는 이미 내 3moronsdb (1, 클래식, 103)에서 일부 값을 삽입합니다.
public class TestMain {
public static void main(String [] a){
GuestsInfo guest = new GuestsInfo(1); //note that this instantiation is the other class which i just
ask the other day.. (https://stackoverflow.com/questions/12762835/retrieving-values-from-database-in-java)
Room rum = new Room(1);
System.out.print(rum.getRoomType()+" "+ guest.getFirstName());
}
}
내가 그것을 실행하는거야 그것은 단지 나에게 객실 클래스에 대한 널 (null) 출력을 제공하지만 난 'Ericka'인 GuestsInfo 클래스의 출력을 얻고있다 : 여기 내 TEST 메인 클래스입니다. 너희들 나를 도울 수 있니? 나는 어제 이런 종류의 문제를 묻는 것을 알고 있지만, 지금 여기서 무엇이 잘못되었는지를 모른다. ..
'Room' 클래스에서'SELECT * FROM guest WHERE guestID =?'에 관해 궁금해하는데, 이것을 선택하면 안된다. 방 테이블에서?열 인덱스를 사용하는 대신 결과 집합에서 값을 검색 할 때 열 이름을 사용했다면이 옵션을 선택했을 것입니다. 순서가 데이터베이스가 결과를 리턴해야한다고 결정하는 f}에 따라 순서가 변경되기 때.에 C 럼 인덱스가 변경 될 수 있습니다 (동일한 것이 이름에 대해 언급 될 수 있음). – MadProgrammer
@MadProgrammer는 당신이 말하는 것에 대해 모범을 보여줄 수 있습니까? 사실, 나는 select 문을 사용하여 데이터베이스에서 데이터를 검색한다. pls. 정정 해줘. – NOOBprogrammer
@MadProgrammer의 말은 select 문이 'SELECT fname, lname from TABLE'인 경우 rs.getString ("fname") 대신 rs.getString (1)을 사용해야합니다. 쿼리를 'SELECT lname , fname ... 'rs.getString (1) 더 이상 fname을 검색하지 않지만 rs.getString ("fname")은 검색합니다. – jcern