2010-01-07 3 views
1

DB 테이블에서 행을 검색하는 방법은 자바

아이디 INT (11) 아니오 AUTO_INCREMENT 변경 드롭 기본 인덱스 고유 전체 텍스트

이메일 VARCHAR (45) latin1_swedish_ci 없음 변경 드롭 기본 인덱스 고유 전체 텍스트 지금 추가

billpayment의 TINYINT (1) 아니오 변경 드롭 기본 인덱스 고유 전체 텍스트

파견 TINYINT (1) 아니오 변경 드롭 기본 인덱스 고유 전체 텍스트

,363,210

주소 VARCHAR (75) 예 NULL 변경 드롭 기본 인덱스 고유 전체 텍스트를

전화 INT (11) 예 NULL 변경 드롭 기본 인덱스 고유 전체 텍스트

created_at의 날짜 없음 변경 드롭 기본 인덱스 고유 전체 텍스트

을 latin1_swedish_ci

예 NULL 변경 드롭 기본 인덱스 고유 전체 텍스트를 떠 totalbillamount

자바 코드 :

 sql = "insert into session_shopping (email,billpayment,dispatch,address,phone,created_at,totalbillamount) values(?,?,?,?,?,?,?)"; 
     ps = (PreparedStatement) con.prepareStatement(sql); 
     ps.setString(1, email); 
     ps.setBoolean(2, false); 
     ps.setBoolean(3, false); 
     ps.setString(4, ""); 
     ps.setInt(5, 0); 
     java.util.Date date = new java.util.Date(); 
     long t = date.getTime(); 
     java.sql.Date sqlDate = new java.sql.Date(t); 
     ps.setDate(6, sqlDate); 
     ps.setFloat(7, 00.0f); 
     int newId = ps.executeUpdate(); 
     System.out.println("newId" + newId); 
     if (newId == 1) { 
      sql = "select * from session_shopping where id = ?"; 
      ps = (PreparedStatement) con.prepareStatement(sql); 
      ps.setInt(1, newId); 
      ResultSet reS = ps.executeQuery(); 
      Session s = new Session(); 
      s.setId(reS.getInt("id")); 
      s.setEmail(reS.getString("email")); 
      System.out.println("retreived"); 
      return s; 
     } else { 
      System.out.println("unable to save"); 
     } 

int newId가 부울이기 때문에이 코드가 실패합니다.

원하는 작업은 다음과 같습니다. 지금 추가 한 행을 검색하고 싶습니다.

답변

4

executeUpdate는 현재 행이 아닌 영향을받은 행 수를 반환합니다.

executeUpdate에 의해 반환이

ResultSet rs = aStatement.executeQuery("SELECT LAST_INSERT_ID()"); 
while(rs.next()) 
{ 
    key = rs.getInt(1); 
} 
2

값은 사용자의 ID와는 아무 상관이 없습니다보십시오.

ID를 받기 전에 전자 메일 변수에서 세션의 전자 메일을 데이터베이스에서 다시 가져 오지 않고 시작할 수 있습니다.

일들이 서 때, 내가 생각할 수있는 유일한 방법에 새로 삽입 된 ID는 따라서 귀하의 SQL을 변경하는 것입니다 얻을 : 당신이 골라 전에 다른 삽입을받을 경우

sql = "select max(id) from session_shopping"; 

이 당신에게 문제를 줄 것이다 최대 ID. 이를 막으려면 select와 동일한 트랜잭션에 select를 넣으십시오.

관련 문제