본문 바로가기
MySql

MySQL + JAVA 예외 : 결과 집합 시작 전

by 베이스 공부 2020. 12. 8.
반응형
try
  {
   PreparedStatement  s = (PreparedStatement) conn.prepareStatement("SELECT voters.Check,count(*) FROM voting.voters where FirstName="+first+"and LastName="+last+" and SSN="+voter_ID);
   //java.sql.Statement k = conn.createStatement();

         rs=s.executeQuery();
               //s.executeQuery("SELECT voters.Check,count(*) FROM voting.voters where FirstName="+first+"and LastName="+last+" and SSN="+voter_ID);

         System.out.println(rs.first());
         c=rs.getInt(1);
         d=rs.getInt(2);

         System.out.println(c);
         System.out.println(d);

          if(c==1 && d==1)
          {
           s.executeUpdate("update cand set total=total+1 where ssn="+can_ID);
           System.out.println("Succeful vote");
           System.out.println("after vote");
           s.executeUpdate("update voters set voters.Check=1 where ssn="+voter_ID);
                 toclient=1;



             PreparedStatement  qw = (PreparedStatement) conn.prepareStatement("select FirstName from cand where ssn="+can_ID);

                 // rs=k.executeQuery("select FirstName from cand where ssn="+can_ID);
             rs1 = qw.executeQuery();//Error Here Plz help me
                  String name1= (String) rs1.getString(1);

                  System.out.println(name1);
                  s.executeUpdate("update voters set VTO="+name1+"where ssn="+voter_ID);
           System.out.println(rs.getString(1));

          }
          else
          {
           if(c != -1)
            toclient =2;
           if( d ==0)
            toclient =3;
           if( d>1)
            toclient =4;

          }
           System.out.println("out-----------");
           rs.close();

           s.close();

  }

   catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

오류 IS :

java.sql.SQLException: Before start of result set
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1072)
 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:986)
 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:981)

 

해결 방법

 

코드 스 니펫에서 PreparedStatements를 작성했지만 올바르게 사용하지 않습니다. 준비된 문은 실행하기 전에 값에 바인딩되는 일종의 '문 템플릿'으로 사용됩니다. javadoc을 인용하려면 :

   PreparedStatement pstmt = con.prepareStatement(
                                 "UPDATE EMPLOYEES SET SALARY = ? WHERE ID = ?");
   pstmt.setBigDecimal(1, 153833.00)
   pstmt.setInt(2, 110592)

현재 PreparedStatement 사용에 비해 두 가지 큰 이점이 있습니다.

두 번째는 큰 문제입니다. 예를 들어 변수 first last 가 사용자 인터페이스에서 수집되고 형식이 변경되지 않으면 SQL의 일부가 입력 될 위험이 있습니다. 그 가치를 위해, 당신의 진술로 끝납니다! 바인딩 된 매개 변수를 사용하면 SQL 문의 일부가 아닌 값으로 만 사용됩니다.

 

참조 페이지 https://stackoverflow.com/questions/2260575

 

 

반응형

댓글