MSSQL JAVA 연동하기(JDBC)
자바랑 MSSQL연동 때문에 몇시간을 보낸건지...
설정해줘야할 자잘한 것들이 너무 많다.
1.MSSQL JDBC 드라이버 받기.
http://www.microsoft.com/ko-kr/download/details.aspx?id=11774
위 링크에서 exe 파일을 받은 후 풀고싶은데다 압축을 푼다.
2. lib에 다운받은 압축파일 추가 하기
압축을 푼 파일을 보면 \sqljdbc_2.0\enu 안에 sqljdbc.jar 과 sqljdbc4.jar이 있는데
얘네를 lib에 추가해줘야 한다.
sqljdbc.jar 과 sqljdbc4.jar의 차이는 jre와 jdk의 버전 차이다.
jre6.0이상이라면 sqljdbc4를 써야한다.
만약 버전이 뭔지 모르겠다면 그냥 아무거나 해본다.
자바가 버전 안맞다고 어떤거 쓰라고 에러 출력해준다.
버전에 맞는 파일을 복사하여
C:\Program Files\Java\jdk1.7.0_07\jre\lib\ext 안에 넣어준다.
또한 jre6혹은 jre7폴더 안의 lib에도 추가해줘야 한다.
C:\Program Files\Java\jre7\lib\ext (혹은 jre6) 안에도 복사해준다.
jre6 아랫 버전에서는 jdk의 lib에만 넣어도 된다는 글을 봤는데 안해봐서 모르겠다.
확실한건 jre6이상에선 반드시 이중으로 해줘야한다는거..
3. 환경변수 설정하기
내컴퓨터->속성->고급->환경변수에서 시스템변수의 CLASSPATH에
C:\Program Files\Java\jdk1.7.0_07\jre\lib\ext \sqljdbc4.jar(혹은 sqljdbc.jar)를 추가한다.
CLASSPATH가 없을경우 하나 새로 만들어서 추가한다.
4. MSSQL 인증 방식 확인하기.
MSSQL에는 Windows Authentication과 SQL Server Authentication 두가지 로그인 방식이 있다.
만약 디비가 Windows Authentication 방식만 허용하는 상태라면
JDBC를 이용해 절대 디비에 접근 할 수 없다. 연결할때 ID와 PW가 필요하기 때문.
그러므로 두 방법 다 허용하는 상태로 바꿔야한다.
MSSQL접속후 서버를 오른쪽 클릭 -> 특성 -> 보안에서 바꿔준다.
아래 그림의 빨간 테두리 부분에서 두번째껄 선택해주면 된다.
5. MSSQL TCP/IP 열어주기.
시작 -> 모든 프로그램 -> Microsoft SQL Server 2008 R2(본인한테 설치되있는걸로)->Configuration tools -> SQL Server Configuration Manager를 열어준다.
SQL Server 네트워크 구성 -> MSSQLSERVER에 대한 프로토콜 에서 TCP/IP를 사용으로 바꿔준후
클릭해서 IP ALL의 TCP 포트를 확인한다. (localhost일 경우 보통 1433으로 설정함)
이 과정을 거칠때 다시시작해야 적용된다는 경고문이 뜬다.
모든 과정을 마쳤다면 시키는대로 다시 시작해주면 된다.
SQL Server 서비스에 들어가면 SQLServer(MSSQLSERVER)라는 항목을 오른쪽 클릭하여 다시시작을 눌러주면 된다.
6. eclipse에서 테스트하기
import java.sql.*;
import sun.misc.*;
public class connectDB {
/**
* @param args
* @throws ClassNotFoundException
* @throws SQLException
*/
public static void main(String[] args) throws ClassNotFoundException, SQLException {
String connectionUrl = "jdbc:sqlserver://localhost:1433;" + "databaseName=디비이름;";//(db서버가 따로 존재한다면 로컬호스트:포트번호 대신 서버아이피:포트번호 를 입력하면된다.
// Declare the JDBC objects.
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
// Establish the connection.
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("Driver okay");
con = DriverManager.getConnection(connectionUrl,"디비아이디","디비비번");
System.out.println("Connection Made");
}
// Handle any errors that may have occurred.
catch (Exception e) {
e.printStackTrace();
}
}
}
Connection Made까지 뜨면 연결 성공!!!!!!!!!!!!!
* 발생할 수 있는 오류들
사용자 '**'이(가) 로그인하지 못했습니다.
: 4번과정에서 인증방식이 Windows Authentication로만 되어있을 때.
: 5번과정에서 MSSQLSERVER가 아니라 SQLEXPRESS에서 설정을 변경했을 때 발생
호스트 localhost, 포트 1433에 대한 TCP/IP 연결에 실패했습니다.
: 5번과정 미수행시 발생
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
: 2번 혹은 3번 과정 미수행시 발생. 그것도 아니면 오타.
[출처] MSSQL JAVA 연동하기(JDBC)|작성자 니모
'JAVA > Java' 카테고리의 다른 글
[JAVA] jdk 설치 환경변수 설정 (0) | 2019.09.30 |
---|---|
openssl AES 모드 : ECB,CBC,CFB,OFB,CTR (0) | 2019.04.02 |
AES 128비트 암호화(ECB 모드, PKCS5Padding) (0) | 2019.04.02 |
스프링에서 사용자(client) IP 가져오기 (0) | 2019.01.03 |
중복 로그인 방지 로직 (1) | 2019.01.03 |
로그인시 아이디가 같은 사용중인 아이디 Session 끊기 (0) | 2019.01.02 |
Java 유료 논쟁, Oracle JDK와 OpenJDK의 차이 정리 (0) | 2018.12.05 |
try~catch문을 사용했을 때와 메서드에 throws를 사용했을 때의 차이점 (0) | 2018.08.09 |