백엔드/JAVA 23

입출력 스트림

입출력 스트림에 대해서 - 자바에서 데이터는 스트림(Stream)을 통해 입출력됨 - 스트림 : 단일 방향으로 연속적으로 흘러가는 것을 의미 - 프로그램을 기준으로 프로세스가 데이터의 도착지라면 입력스트림(InputStream), 프로세스가 데이터의 출발지라면 출력스트림(OutputStream) ※ 항상 기준은 프로그램! 입출력 스트림의 종류 - java.io 패키지에는 여러 가지 종류의 스트림 클래스를 제공하는데, 크게 두 종류로 구분됨 ① 바이트(byte) 기반 스트림 : 그림, 멀티미디어 등의 바이너리 데이터를 읽고 출력할 때 사용 ② 문자(text) 기반 스트림 : 문자 데이터를 읽고 출력할 때 사용 - 그렇다면 스트림 클래스가 바이트 기반인지, 문자기반인지 어떻게 구별할 수 있을까? → 하위 클..

백엔드/JAVA 2023.06.11

게시판 구현 (2)

게시물 생성 기능 ▷ 실행 결과 ▶ BoardManager4 클래스 메인 메뉴에서 '1. Create' 선택 시, 새로운 게시물의 제목, 내용, 작성자를 키보드로 입력받고, 보조 메뉴에서 '1.Ok'를 선택 시, boards 테이블에 새로운 게시물이 저장되도록 해보자. package bbs.mariadb.controller; import static bbs.mariadb.util.BbsIO.p; import static bbs.mariadb.util.BbsIO.pl; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.s..

백엔드/JAVA 2023.06.07

게시판 구현 (1)

지금까지 학습한 JDBC를 활용해 CRUD( Create, Read, Update, Delete ) 기능이 포함된 게시판을 구현해보자. 실행 결과를 보고 코드 작성하는 연습 해보자. 메인 메뉴 ▷ 실행 결과 ▶ BoardManager 클래스 : 실제 게시판을 관리하는 클래스 ① list( ) 메서드 : 화면에 게시글 목록을 출력하는 메서드 → list( ) 메서드 안에서 mainMenu( ) 메서드 호출 ② mainMenu( ) 메서드 : 화면 하단에 메인 메뉴를 출력하는 메서드 package bbs.mariadb.controller; import static bbs.mariadb.util.BbsIO.*; // static 속성을 모두 여기에 추가하라는 의미 // p(), pl()메서드가 BoardMan..

백엔드/JAVA 2023.06.02

데이터 입출력 (2)

데이터 수정 JDBC를 이용해 UPDATE문을 실행해보자. boards 테이블에 저장된 게시물 중에서 bno가 3인 게시물의 btitle, bcontent, bfilename, bfiledata를 변경해보자. package mariadb; import java.io.FileInputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class BoardUpdateExampleApp { public static void main(String[] args) { Connection conn = null; String..

백엔드/JAVA 2023.05.31

데이터 입출력(1)

JDBC 개요 - JDBC ( Java Database Connectivity ) 라이브러리 ( java.sql.패키지 )를 제공 → 데이터베이스 ( DB )와 연결해서 데이터 입출력 작업 · JDBC는 데이터베이스 관리시스템 ( DBMS )의 종류와 상관없이 동일하게 사용할 수 있는 클래스와 인터페이스로 구성 - JDBC에 포함되어 있는 클래스와 인터페이스들의 연관관계 · JDBC Driver : JDBC 인터페이스를 구현한 것으로, JDBC 인터페이스를 통해 실제로 DB와의 작업을 함 DBMS마다 별도로 다운로드 받아 사용해야 함 (이전 게시물에 자세히 작성함) ① DriverManager : DriverManager 클래스는 JDBC Driver를 관리하며 DB와 연결해서 Connection 구현 ..

백엔드/JAVA 2023.05.30

JDBC 드라이버 다운로드 및 등록

MariaDB 드라이버 및 H2 드라이버 다운로드 - DB마다 JDBC 드라이버 다운로드해야함 ① 구글에 'maven repository' 검색 - MariaDB 드라이버 및 H2 드라이버 다운로드 ② lib 폴더 생성 - 붙여넣기 ③ [ Build Path ] - [ Add external JARs ] - [ Modulespath ]에 등록 ④ Package Explorer 창에서 [ Refresh ] - [ Referenced Libraries ] - 드라이버 등록 여부 반드시 확인하기 사진 DBConnection 클래스 package model.connect; import java.sql.Connection; import java.sql.DriverManager; import static model..

백엔드/JAVA 2023.05.23

H2 데이터베이스 연결 (2)

( 지난 수업에 이어서 ) CRUD 구현 ▷ 테이블 생성 및 데이터 추가 package db.model; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class H2ConnectionDemoApp { // JDBC_DRIVER static final String JDBC_DRIVER = "org.h2.Driver"; // DB_URL static final String DB_URL = "jdbc:h2:/Users/dahee/Desktop/app/database/h2/java2/:Use..

백엔드/JAVA 2023.05.22

H2 데이터베이스 연결 (1)

JDBC를 사용한 H2 데이터베이스 연결 ▷ JDBC ( Java Database Connectivity ) - 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API ( Application Programming Interface ) ( API : 애플리케이션 소프트웨어를 빌드하고 통합하기 위한 정의 및 프로토콜 세트인 애플리케이션 프로그래밍 인터페이스를 의미 ) - JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공 - JDBC 표준 인터페이스 ❶ java.sql.Connection : 연결 ❷ java.sql.Statement : SQL을 담은 내용 ❸ java.sql.ResultSet : SQL 요청 응답 → 데이터베이스를 연결하여 테이블 형태의 자료를 참조 SQL문을 질의,..

백엔드/JAVA 2023.05.22

👉🏻 에러의 종류 및 에러 처리

에러의 종류 ① 실행 에러( 실행 시, 알고리즘이 잘못되어 나타나는 논리 에러 => 실행을 해야 에러 여부를 확인할 수 있음 : Runtime Error ) ② 컴파일 에러 두 수를 입력받아 나누기 연산 시, 0으로 나누게 되면 어떻게 될까? package myexception; import java.util.Scanner; public class DivideExceptionApp { public static void main(String[] args) { // 두 개의 숫자를 입력함 Scanner sc = new Scanner(System.in); System.out.print("첫번째 숫자를 입력해주세요 : "); int num1 = Integer.parseInt(sc.next()); System.o..

백엔드/JAVA 2023.05.18

객체 지향 프로그래밍 이론(6)

인터페이스 - 인터페이스 ( Interface ) : 객체의 사용방법을 정의한 것 · 일종의 추상클래스 · 추상클래스보다 추상화 정도가 높음 → 오직 추상메서드와 상수만을 멤버로 가질 수 있음 - 추상클래스와의 비교 · 추상클래스 : 부분적으로만 완성된 '미완성 설계도' · 인터페이스 : 구현된 것은 아무것도 없고 밑그림만 그려져 있는 '기본 설계도' → 다른 클래스를 작성하는데 도움 줄 목적으로 작성 ▷ 인터페이스 선언 - class 대신 interface 키워드 사용 [ public ] interface 인터페이스이름 { // ① 상수 필드 public static final 타입 상수이름 = 값 ; → 생략 가능 ( 생략된 제어자는 컴파일 시, 컴파일러가 자동적으로 추가시킴 ) // ② 추상클래스 ..

백엔드/JAVA 2023.05.16