mysql-connector-java-5.1.45-bin.jar
0.95MB
안녕하세요 le-piee입니다
오늘은 데이터베이스랑 연동하는 법에 대해 적어보려 합니다
환경
jdk 8
이클립스 19-6
mysql 5.7

일단 먼저 자바 프로젝트에 jdbc를 추가해줘야 합니다
맨 위에 있는 jdbc를 다운로드한 후



User.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
public class User {
String id;
String name;
String password;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
|
나중에 Dao에서 여기로 데이터를 넘길 것입니다
우리는 이 클래스에 접근을 하여 데이터를 조회하거나 추가할 예정입니다
UserDao.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
//Dao (Data Access Object) db를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트를 말함
public class UserDao {
//DB와 연결하는 메소드
//주소와 아이디 비밀번호를 데이터베이스에 넣어 연결을 확인한다. 연결이 되면 Conn을 리턴한다.
private Connection getConnection() throws ClassNotFoundException,SQLException{
String url ="jdbc:mysql://localhost:3306/Spring?useSSL=false&useUnicode=yes&characterEncoding=UTF-8";
//jdbc:mysql://localhost:3306/데이터베이스명?useSSL=false&useUnicode=yes&characterEncoding=UTF-8";한글 깨짐을 방지
String userName ="root"; //ID입력
String password="password!"; //Password입력
Class.forName("org.gjt.mm.mysql.Driver");
Connection conn = DriverManager.getConnection(url,userName,password);
return conn;
}
//User를 추가하는 메소드
//리턴받은 Connection메소드를 호출하여 리턴받은 후 쿼리를 넣음
public void add(User user) throws ClassNotFoundException, SQLException{
Connection c = getConnection();
PreparedStatement ps = c.prepareStatement(
"insert into users(id,name,password) values(?,?,?)");
ps.setString(1, user.getId());
ps.setString(2, user.getName());
ps.setString(3, user.getPassword());
ps.executeUpdate();
c.close();
}
//User를 조회하는 메소드
//Add메소드와 동일하지만 조회하는
public User get(String id) throws ClassNotFoundException, SQLException{
Connection c = getConnection();
PreparedStatement ps = c.prepareStatement(
"select * from users where id = ?");
ps.setString(1, id);
ResultSet rs = ps.executeQuery();
User user = new User();
user.setId(rs.getString("id"));
user.setName(rs.getString("name"));
user.setPassword(rs.getString("password"));
c.close();
return user;
}
|
DAO는 연결 부분과 사용자 등록과 조회하는 클래스이다.
코드를 보면 보이겠지만 User클래스로 값을 넘기고 받는다
TestMain.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
import java.sql.SQLException;
public class TestMain {
public static void main(String[] args) throws ClassNotFoundException, SQLException{
// TODO Auto-generated method stub
//UserDao클래스를 인스턴스화
UserDao dao = new UserDao();
//User클래스를 인스턴스화 후 값을 넣는다
User user = new User();
user.setId("TestID");
user.setName("테스트이름");
user.setPassword("TestPw");
//값을 다 넣었으니 add메소드를 호출하여 insert 한다
dao.add(user);
//User클래스를 사용한 인스턴스를 하나 더 생성한 후 조회를 한다
User user2 = dao.get(user.getId());
System.out.println(user2.getName());
System.out.println(user2.getPassword());
}
|
그 후 테스트를 해야 하니 main 클래스를 생성한다 자세한 건 주석으로 설명해 놓았다


java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
혹시 이러한 에러가 발생한다면 root계정에 권한이 없는 건데 권한을 부여하면 됩니다.
use DB명;
grant all privileges on DB명.* to root@'%' identified by '비밀번호 입력' with grant option;
flush privileges;
이 코드를 데이터베이스에 넣어보면 해결됩니다.