감격이다... jdbc 연결 jsp 공부할 떄부터 안됐었는데 오늘 끙끙 붙잡고 겨우됐다!!!! 카페인의 힘인가 .. ㅜㅜㅜ
다음과 같이 driver, url, userid, userpw, conn pstmt rs를 선언해두자.
url 에서 'orcl' 부분은 sid 값을 써주면된다.
conn은 연결하기 위한 객체 pstmt는 sql문을 써서 담아주기 위함이며 rs 같은 것은 select 으로 결과값 갖고온다
JDBC 는 드라이버 로딩 -> DB 연결 -> SQL 작성 및 전송 -> 자원해제 의 순서를 거친다.
Class.forName(driver)를 통해 드라이버를 로딩하고.
conn 객체를 이용하여서 url, userid, userpw 를 파라미터로 하여 연결을 한다.
String sql 을 선언하여서 sql 문을 작성하고 pstmt 안에 conn 객체를 이용하여 보내는데,
sql 문의 ? 부분을 setString 을 이용해 채워준다.
result=pstmt.executeUpdate() 은 성공여부를 말해주며, 1 을 return 하면 성공이다.
이후에는 자원해제를 위해 사용한 것들을 close 해주어야 한다.
ResultSet은 다음과 같이 사용한다.
rs.getString 은 컬럼을 가져오는것이고, rs.next()는 열이라고 생각하면 편하겠다.
여기서
ORA-28040 인증프로토콜 없음 오류가 뜰 수 있는데, CLIENT 와 SERVER 버전 차이 때문에 그렇다고한다.
APP -> ORACLE -> PRODUCT -> 각자의 VERSION -> DB_HOME -> NETWORK -> ADMIN -> SQLNET.ORA
파일을 메모장으로 열어서
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
를 추가해주자. 실험해본 결과 10ㅣ든 8이든 같으니깐 되더라.
그리고 위에
SQLNET.AUTHENTICATION_SERVICES = (NTS)
이것이 있는데, NTS 부분을 NONE 으로 바꾸면 CMD 에서 sqlplus "/as sysdba" 로 로그인 못하니 참고하도록 하자.
이것을 통과했는데
ORA-01017 암호 패스워드 문제 오류가 뜰 수 있다.
이 경우에는
sqlplus "/as sysdba" 후에 alter system set sec_case_sensitive_logon=false;
를 입력해주자. 오라클 접속 시에 대소문자 구분을 없애주는 것이다. 애초에 처음 user create 시에 비밀번호 설정을 할 때에 indentified by "tiger" 이렇게 따옴표를 붙여주면 괜찮다고는 하는데 안해봐서 잘 모르겠다.
이렇게 했는데도 안되는 경우가 있는데 내가 그랬다. scott / tiger 이라고 당연히 생각하고 있었고 sqldeveloper 이용시에도 이렇게 이용을 했었는데.. 잘못됐었나보다 비밀번호가
cmd 에서 sqlplus 만 치고 scott/tiger 으로 로그인이 안되었다.
이럴 때에는 sysdba로 들어가서
alter user scott identified by tiger' 로 scott 의 비밀번호를 변경해주면 된다.
코드마다 이 연결과 해제 작업을 하기에는 너무나도 비효율적이다. 이를 위해서 JdbcTemplate 을 쓰는데
드라이버 로딩, DB 연결, 자원해제와 같은 반복되는 작업을 담당한다.
데이터베이스 연결과 관련된 정보를 가지고 있는 DataSource는 스프링 또는 c3p0에 제공하는 클래스를 이용할 수 있다.
DriverManagerDataSource dataSource 선언 후
new DriverManagerDataSource() 를 통해 객체 생성
드라이버를 넣어주고 값들을 넣어준다.
그리고 이 dataSource를 계속 쓰기위해서 위에서 선언한 JdbcTemplate template 에 넣어둔다.
template.setDataSource(dataSource) 를 통해서 말이다.
이렇게 result=에 template.update 을 통해 ? 를 채워놓고 한다.
return members.get(0);
이렇게 select 문을 이용한다.
insert와 select에는 다른 방법들도 있다.
첫 번째는 위에서 언급한 방법이고 밑 2가지 방법이 추가로 더있다.
select 에서는
위에 언급한 것은 생략하겠다. 밑에 추가로 3가지 방법이 있다.
그리고 dataSource 또한 bean 객체로 미리 만들어 두고 저렇게 자동주입으로 사용해줄 수 있다.
그리고xml 파일이 아닌 java를 통해 config를 사용할 수 있다.
'공부 기록들' 카테고리의 다른 글
2020.04.13 MVC(2) (파라미터 받아오기) (0) | 2020.04.13 |
---|---|
2020.04.10 static에 대해서 & MVC(1) (0) | 2020.04.10 |
2020.04.06 Spring(6) (0) | 2020.04.06 |
2020.04.05 Spring(5) (0) | 2020.04.06 |
2020.04.03 Spring (4) (0) | 2020.04.03 |