jdbc MySQL 데이터베이스 연결 간단 한 응용

3572 단어 자바
jdbc 는 MySQL 데이터 베 이 스 를 연결 하 는 것 과 Oracle 데이터 베 이 스 를 연결 하 는 대체 적 인 절차 가 같 습 니 다.먼저 데이터 베 이 스 를 불 러 온 다음 에 데이터 베 이 스 를 연결 한 다음 에 sql 문 구 를 실행 하고 마지막 으로 결과 집합 을 되 돌려 줍 니 다.하지만 MySQL 을 연결 하려 면 가 져 와 야 할 드라이버 는 mysql-connector.jar 입 니 다.
다음은 하나의 demo 를 통 해 콘 솔 에서 데이터 베 이 스 를 입력 한 사용자 이름과 비밀 번 호 를 MySQL 에 연결 하고 student 표를 만들어 삽입 과 조회 기능 을 실현 합 니 다!
  • demo 류 를 만 들 고 my sql-connector.jar 를 가 져 옵 니 다.Class.forName("com.mysql.jdbc.Driver")을 통 해;      또는 com.mysql.jdbc.Driver driver=new com.mysql.jdbc.Driver();      또는 new com.mysql.jdbc.Driver();  로드 드라이브 를 진행 합 니 다

  • DriverManager.getConnection("jdbc:mysql://localhost:3306/student",Uname,psw);연결 만 들 기
  • statement 대상 을 만 들 고 executeUpdate(sql),executeQuery(sql)등 방법 으로 데이터 생 성 및 조회
  • 결과 집합 을 순환 적 으로 옮 겨 다 니 며 마지막 으로 연결 을 닫 습 니 다
  • 구체 적 인 코드 는 다음 과 같다.
    public static void main(String[] args) throws Exception{
    			Connection conn=null;
    			try {
    				String sql="";
    				//                
    				Scanner in=new Scanner(System.in);
    				System.out.println("      :");
    				String Uname=in.next();
    				System.out.println("     :");
    				String psw=in.next();
    				//  MySQL  
    				Class.forName("com.mysql.jdbc.Driver");
    				//       
    				conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/student",Uname,psw);
    				//  Statement  
    				Statement st=conn.createStatement();
    				//  student 
    				sql = "create table student(id char(20),name varchar(20),primary key(id))";
    				//           
    				int result=st.executeUpdate(sql);
    				//result!=-1      
    				if(result!=-1){
    					System.out.println("       ");
    					//    
    					sql = "insert into student(id,name) values('001','james')";
    					result = st.executeUpdate(sql);
    					//    
    					sql="select * from student";
    					//      resultset  
    					ResultSet rs=st.executeQuery(sql);
    					//       
    					while(rs.next()){
    						int id=rs.getInt("id");
    						String name=rs.getString("name");
    						System.out.println(id+" ");
    					}
    				}
    			} catch (Exception e) {
    				e.printStackTrace();
    			}finally{
    				//    
    				conn.close();
    			}
    		}

    주의:본 논문 에서 사용 하 는 statement 대상 은 SQL 문 구 를 실 행 했 지만 실제 프로젝트 에서 우 리 는 이 대상 을 prepared statement 으로 대체 했다.이 유 는 다음 과 같다.
    1、 Prepared Statement 인터페이스 계승 Statement, Prepared Statement 인 스 턴 스 는 컴 파일 된 SQL 문 구 를 포함 하기 때문에 실행 속도 가 Statement 대상 보다 빠 릅 니 다.
    2.Statement 의 하위 클래스 로 서 Prepared Statement 은 Statement 의 모든 기능 을 계승 합 니 다.세 가지 방법
          execute,executeQuery,executeUpdate 는 인자 가 필요 하지 않 게 변경 되 었 습 니 다.
    3.가장 중요 한 것 은 안전성 을 크게 향상 시 켰 다 는 것 입 니 다.아직도 일부 사람들 은 기본 적 인 악의 SQL 문법 도 모 릅 니 다.string sql="select*from tb"name where name= '"+varname+"' and passwd='"+varpasswd+"'";만약 우리 가[or'1'='1]을 varpasswd 로 전달한다 면,사용자 이름 은 마음대로,무엇이 될 지 봅 시다.select * from tb_name='임의의'and passwd='or'1'='1';'1'='1'은 반드시 성립 되 기 때문에 모든 검증 을 통과 할 수 있 습 니 다.더욱 심 한 것 은['를...drop table tb_name;]varpasswd 로 들 어 오 면:select*from tbname='마음대로'and passwd=';drop table tb_name;일부 데이터 베 이 스 는 성공 하지 못 하지만 많은 데이터 베 이 스 를 사용 하면 이 문 구 를 실행 할 수 있 습 니 다.사전 컴 파일 문 구 를 사용 하면 들 어 오 는 모든 내용 이 원래 의 문장 과 일치 하 는 관 계 를 가지 지 않 습 니 다.사전 컴 파일 문 구 를 모두 사용 하면 들 어 오 는 데이터 에 대해 서 는 아무런 걱정 하지 않 아 도 됩 니 다.일반적인 statement 을 사용 하면 drop 에 대해 서 는 drop 을 사용 할 수 있 습 니 다.심혈 을 기울 인 판단 과 과 걱정 을 하 다.
    마지막 으로 프로젝트 개발 에 있어 preparedstatement 대상 을 사용 하면 본인 의 라 는 글 을 참고 할 수 있 습 니 다!

    좋은 웹페이지 즐겨찾기