이제 데이터베이스를 활용해서 값을 저장을 하잖아? 그러면 우리가 명령어로 article write 했을 때 자동으로 데이터베이스에 우리가 입력한 값이 저장 되어야겠지? 우선 이거를 먼저 해보자.
처음 생각해야 할게 값을 저장하려면 데이터베이스에 table을 만들어야 하잖아.
그래서 우리는 article 테이블을 만들거야.
create table article(
id int(10) unsigned not null primary key auto_increment,
regDate datetime not null,
updateDate datetime not null,
title char(100) not null,
`body` text not null
);
이렇게 sql문을 작성해 주면 되는데, 우리는 속성을 id, reDate, updateDate, title, body 이렇게 줄거야.
또한 중요한게 id는 PK로 설정해주고, autoincrement를 걸어서 자동으로 1씩 증가하도록 설정 했어.
그럼 테이블이 만들어 졌으니까 insert를 해보자
Connection conn = null;
PreparedStatement pstmt = null;
try {
Class.forName("org.mariadb.jdbc.Driver");
String url = "jdbc:mariadb://127.0.0.1:3306/AM_DB_25_03?useUnicode=true&characterEncoding=utf8&autoReconnect=true&serverTimezone=Asia/Seoul";
conn = DriverManager.getConnection(url, "root", "1234");
System.out.println("연결 성공!");
String sql = "insert into article";
sql += " set regDate = now(),";
sql += "updateDate = now(),";
sql += "title = '" + title + "',";
sql += "`body` = '" + body + "';";
System.out.println(sql);
pstmt = conn.prepareStatement(sql);
int affectedRows = pstmt.executeUpdate();
System.out.println("affected rows: " + affectedRows);
}
나도 처음에는 db도 처음 연결해보고 쿼리문도 처음 작성해봐서 어떻게 하는지 감이 잘 안잡혔는데 단순히 생각해보면 그렇게 막 어려운 작업은 아닌것 같아. 하다보면 감이 좀 잡혀서 잘 할거야!!
저번에 연결했을 때 작성한 코드에서 단순히 insert문만 java형식으로 작성한 형태라고 생각해보자.
sql이라는 문자열 변수에 insert문을 넣는거야. 그리고 sql+=를 해서 reDate, updateDate, title, body의 값을 우리가 입력해준 값으로 속성을 채우는 형태야. 중요한 부분은 id는 자동으로 증가되니까 신경쓰지 않아도 돼.
추가적으로 sql += "title = '" + title + "',"; 이 부분에서 무조건 '' 작은 따움표로 감싸줘야 문자열 형식이 되니까 필수로 해줘야해!!
pstmt = conn.prepareStatement(sql); //pstmt로 insert문을 실행!!!
int affectedRows = pstmt.executeUpdate(); insert문이 몇 열에 추가되었는지 확인하는 변수
이제 좀 감이 잡히나?