Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- target
- session.getAttribute
- 데이터사이언스
- session.removeAttribute
- session.setAttribute
- 파일 호출
- 빈즈
- 페이지 이동
- 버리자
- 페이지이동
- ;
- 동기 부여
- 로그인화면
- "
- 미래직장
- iframe
- static
- 자바빈즈
- 팝업창
- javaBeans
- scanner
- Import
- BEANS
- 파일호출
- 영감
- 동기부여
- opener
- Alert
- \
- 향상된 for문
Archives
- Today
- Total
갈림길 이정표
[java] DB 역행, 첫행, 마지막행 레코드 읽기 본문
package pack1;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class DbTest4RexMove extends JFrame implements ActionListener{
JButton btnF, btnP, btnN, btnL;
JLabel lblNo, lblName;
Connection conn;
Statement stmt;
ResultSet rs;
public DbTest4RexMove() {
super("레코드 이동");
layInit();
accDb();
setBounds(300, 300, 300, 250);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void layInit() {
lblNo = new JLabel(""); //JLabel("", 5)은 자릿 수 못줌 (TextField 는 가능)
lblName = new JLabel("");
JPanel panel = new JPanel();
panel.add(new JLabel("직원 자료: "));
panel.add(lblNo);
panel.add(lblName);
add("North",panel);
btnF = new JButton("|<<"); //처음
btnP = new JButton("<<"); //이전
btnN = new JButton(">>"); //다음
btnL = new JButton(">>|"); //마지막
JPanel panel2 = new JPanel();
panel2.add(btnF);
panel2.add(btnP);
panel2.add(btnN);
panel2.add(btnL);
add("Center",panel2);
btnF.addActionListener(this);
btnP.addActionListener(this);
btnN.addActionListener(this);
btnL.addActionListener(this);
}
private void accDb() { //DB 접속
try {
Class.forName("org.mariadb.jdbc.Driver"); //딱 한번 연결 (필요할 때만 연결해줘야 돼)
//DB 접속은 한번 하고 끝내는 게 맞지만 연속된 자료를 보여줘야할 때는? (Connection로 계속 연결) → 어플리케이션만 권장
//웹에서는 cookie, session으로 연결되어 있는 거처럼 느끼게 해줌
//경우에 따라 DB 연결이 지속되어야 한다.(비권장)
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "369369");
stmt = conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE, //DB연결 지속가능케 하는 옵션 (TYPE_FORWARD_ONLY(기본값))
//수정불가능(SCROLL INSENSITIVE) ?????
ResultSet.CONCUR_READ_ONLY); //레코드 역방향 이동 가능
rs = stmt.executeQuery("SELECT jikwon_no, jikwon_name FROM jikwon");
// rs.next(); //한 행 이동해야 첫줄 읽기
display();
} catch (Exception e) {
System.out.println("err: " + e);
}
}
private void display() {
try {
lblNo.setText(rs.getString("jikwon_no"));
lblName.setText(rs.getString("jikwon_name"));
} catch (Exception e) {
}
}
@Override
public void actionPerformed(ActionEvent e) {
try {
if(e.getSource() == btnF) rs.first();
else if(e.getSource() == btnP) rs.previous();
else if(e.getSource() == btnN) rs.next(); //원래 기본 기능
else if(e.getSource() == btnL) rs.last();
display();
} catch (Exception e2) { // 에러가 나지 않을 것이 확실하다면 굳이 안적어도 됨
}
}
public static void main(String[] args) {
new DbTest4RexMove();
}
}
'Programming Language > Java 마스터하기(feat. 이것이 자바다)' 카테고리의 다른 글
[java] DB Statement.execute = boolean type (0) | 2020.08.05 |
---|---|
[java] (problem) DB 레코드 자유 읽기 및 참조 출력 (0) | 2020.08.05 |
[java] DB 접속 메소드 통해 프레임 창에 띄우기 (0) | 2020.08.05 |
[java] DB CRUD (0) | 2020.08.04 |
[java] DB driver load, DB 연결, 자료 읽기 (0) | 2020.08.04 |
Comments