SQL구문이 select 이면

->executeQuery->ResultSet 사용  -> https://codedragon.tistory.com/5975

 

ResultSet 인터페이스, ResultSet 인터페이스, ResultSet.next(), ResultSet.getXXX(), ResultSet.updateXXX()

ResultSet 인터페이스 ResultSet 인터페이스는 SELECT문을 executeQuery()메소드로 실행한 다음 반환되는 레코드 셋(recoredset)을 저장합니다. 레코드 셋은 가상의 데이터베이스 테이블 형태입니다. SELECT문을..

codedragon.tistory.com

-statement 객체-

ResultSet rs = st.executeQuery(sql);
			
			while(rs.next()) {	//next() : 결과객체에 가르키는 포인터가 있으면 true
				int num = rs.getInt("num");
				String name = rs.getString("name");
				int age = rs.getInt("age");
				String addr = rs.getString("addr");
				String tel = rs.getString("tel");
				System.out.println(num + "\t" + name + "\t" + age + "\t" + addr + "\t" + tel);
			}

-preparedStatement-

PreparedStatement ps = conn.prepareStatement(sql);
			
			ResultSet rs = ps.executeQuery();
			while(rs.next()) {
				int num = rs.getInt("num");
				String name = rs.getString("name");
				int age = rs.getInt("age");
				String addr = rs.getString("addr");
				String tel = rs.getString("tel");
				System.out.println(num + "\t" + name + "\t" + age + "\t" + addr + "\t" + tel);
			}

UPDATE,INSERT,DELETE 이면

->executeUpdate->Int형으로 반환되면 변수 사용

 

 

'For developer > JAVA' 카테고리의 다른 글

자바 시간차이 문자열 변환  (0) 2021.03.31
(JAVA)문자열클래스  (0) 2020.05.12
JDBC 작업순서  (0) 2020.04.24
JDBC ORACLE 연결 오류 뜰 시 설정하는 법  (0) 2020.04.23
자바 환경구축  (0) 2020.04.23

[JAVADB의 연동 : JDBC(Java DataBase Connection) Programming]

JDBC 작업 순서

Driver 클래스를 메모리에 Loading 정적로딩

- JDBC Driver 등록

(C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib\ojdbc6.jar)

 

JDBC API Import : JAVADB를 연동해 주는 패키지를 import import java.sql.*

 

Class

DriverManager

드라이버

OracleDriver.class

Interface

Connection

연결객체

 

Statement

전송객체

(SQL 문장전송)

 

PreparedStatement

많이 사용

ResultSet

결과객체

Select Qurey

 

OracleDriver.class 생성 동적로딩

- Class.forName("oracle.jdbc.driver.OracleDriver");

 

Connection(연결객체) jdbc:oracle:thin:@127.0.0.1:1521:XE

- jdbc:oracle:thin: 프로토콜, 구분기호는 콜론

- @127.0.0.1:1521:XE 서브프로토콜 : IP 시작전에 @기호, 포트번호, 서비스네임

- user : hanul, password : 0000

 

SQL문장 전송(전송객체) : Statement, PreparedStatement

- Statement 전송객체 생성 : Stmtement st = conn.createStatement();

- PreparedStatement 전송객체 생성 : PreparedStatement ps = conn.preparedStatement(sql);

 

SQL 문장 작성 : String sql = " ~~~ ";

 

Statement 객체에 SQL 문장을 전송

- insert, delete, update executeUpdate();

- select executeQuery();

 

JAVA 입력변수를 이용한 SQL문장 작성시 “ + 변수명 + ”

String sql = "insert into tblMember values";

sql += "( " + num + " , ' " + name + " ', " + age + " , ' " + addr + " ', ' " + tel + " ')";

 

PreparedStatement 작성 시 유의사항

- 먼저 SQL 문장을 작성한다.

- SQL 문장에서 매개변수(JAVA변수)?로 작성

- ps.setInt(), ps.setString() : (변수)을 할당

- 일련번호는 1부터 시작

- ps.executeUpdate(), ps.executeQuery() : SQL문 전송 시 괄호 안에는 입력하지 않는다.

 

String sql = "insert into tblMember values(?, ?, ?, ?, ?)";

PreparedStatement ps = conn.preparedStatement(sql);

ps.setInt(1, 5);

ps.setString(2, "지선우“);

ps.setInt(3, 40);

ps.setString(4, "서울시 강남구 청담동“);

ps.setString(5, "010-5555-5555");

ps.executeUpdate();

JDBC.hwp
0.03MB

'For developer > JAVA' 카테고리의 다른 글

(JAVA)문자열클래스  (0) 2020.05.12
JDBC 한눈에 보기  (0) 2020.04.26
JDBC ORACLE 연결 오류 뜰 시 설정하는 법  (0) 2020.04.23
자바 환경구축  (0) 2020.04.23
(JAVA_jdbc)기본1  (0) 2020.04.22

JDBC를 실행할려 하는데 이클립스 콘솔 창에서는 정상 작동 되는데 CMD창에서 프로그램을 돌릴 때 Excepction이 떠서 오류 해결 하는 방법을 찾아 보았다.

 

 

먼저 환병변수에서 CLASSPATH가 다음과 같이 잘 설정 되어있는지 확인하고 ; 뒤에 C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib\ojdbc6.jar

 jar 파일이 들어있는 경로를 추가한다.

'For developer > JAVA' 카테고리의 다른 글

JDBC 한눈에 보기  (0) 2020.04.26
JDBC 작업순서  (0) 2020.04.24
자바 환경구축  (0) 2020.04.23
(JAVA_jdbc)기본1  (0) 2020.04.22
(Java_Pasrshing)다음 인기검색어 파싱하기  (0) 2020.04.19

03.JAVA_SE개발환경준비(win10).hwp
0.37MB

JAVA 개발 환경 준비

 

- JDK(Java Development Kit) 개발 도구 키트

- IDE(Integrated Development Environment) 통합 개발 환경(도구, 에디터)

 

JDK 설치하기

- http://www.oracle.com 접속

- 상단메뉴 Developers > Downloads 클릭

(https://www.oracle.com/technetwork/java/javase/downloads/index.html)

- Java SE Downloads > Java SE 8u231 클릭

(https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)

- Accept License Agreement > OS(운영체제) 선택 후 다운로드 저장 후 설치

 

Java 환경 변수 세팅하기

- 에서 설치한 JDK의 설치 경로를 확인하고 설치 경로 주소 복사

(C:\Program Files\Java\jdk1.8.0_XXX)

- 컴퓨터 > 마오 > 속성 > 고급 시스템 설정 > 환경 변수

(또는 제어판 > 시스템 및 보안 > 시스템 > 고급 시스템 설정 > 환경 변수)

- JAVA_HOME 환경 변수

 

 

- PATH 환경 변수

 

- 변수 이름 : Path

- 변수 값 :

 

- CLASSPATH 환경 변수

 

- JDK 및 환경변수 테스트

 

IDE(eclipse) 설치하기

- D:\Study_Java 폴더 만들기

- http://www.eclipse.org 접속하기

- 상단 메뉴의 Downloads 클릭(http://www.eclipse.org/downloads)

- 본문의 Get Eclipse IDE 항목 하단의 Download Packages

- 오른쪽 메뉴 : More Downloads > Eclipse Oxygen

(https://www.eclipse.org/downloads/packages/release/oxygen/3a)

- Eclipse IDE for Java EE Developers > Windows 64bit 클릭

- 본문의 DownLoad 클릭 > 저장 후 압축해제(D:\개발자프로그램)

- D:\개발자프로그램\eclipse\eclipse.exe >마오 >보내기 >바탕화면에 바로가기 만들기

- D:\Study_Java\workspace 폴더 만들기

- eclipse 실행 시 workspace 경로를 변경하기

(D:\Study_Java\workspace)

 

- eclipse 실행 후 > Windows MenuBar > Open Perspective > Other > Java

 

'For developer > JAVA' 카테고리의 다른 글

JDBC 작업순서  (0) 2020.04.24
JDBC ORACLE 연결 오류 뜰 시 설정하는 법  (0) 2020.04.23
(JAVA_jdbc)기본1  (0) 2020.04.22
(Java_Pasrshing)다음 인기검색어 파싱하기  (0) 2020.04.19
(Java_Json)광주버스 api 가져오기  (0) 2020.04.19

[데이터베이스 프로그래밍] : JDBC

 Oracle SQL 설치

   - https://www.oracle.com 접속

   - 상단 메뉴 > Dowsloads > Developer Downloads > Database > Database 11g Enterprise/Standard Editions > Oracle Database Express Edition > Oracle Database 11g Release 2 Express Edition for Windows 64 > Oracle Database 11gR2 Express Edition for Windows x64 다운로드

   - 압축 해제 후 설치 ▶ PassWord : 0000

   - 설치 완료 후 CMD > sqlplus  UserName : system, PassWord : 0000  SQL>_

   

SQL> create user hanul identified by 0000;

User created.

 

SQL> grant dba to hanul;

Grant succeeded.

 

SQL> commit;

Commit complete.

   

SQL> exit;

Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

 

C:\Users\hanul>sqlplus

 

SQL*Plus: Release 11.2.0.2.0 Production on  4 8 15:29:20 2020

 

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

 

Enter user-name: hanul

Enter password: 0000

 

Connected to:

Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

 

SQL> create table tblMember( //tblMember 테이블 생성

  2  num number,                         //num 필드 정수형

  3  name varchar2(10),             //name 필드 문자형(10자리)

  4  age number,                         //age 필드 정수형

  5  addr varchar2(50),             //addr 필드 문자형(50자리)

  6  tel varchar2(20)                         //tel 필드 문자형(20자리) ※ 마지막 라인은 쉼표 생략

  7  );                                                 //명령실행

 

Table created.                                     //명령실행 후에 테이블 생성완료

 

SQL> desc tblMember;             //tblMember 테이블 구조 출력

 Name                             Null?    Type

 ----------------------------------------- -------- ----------------------------

 NUM                                             NUMBER

 NAME                                     VARCHAR2(10)

 AGE                                       NUMBER

 ADDR                                      VARCHAR2(50)

 TEL                                        VARCHAR2(20)

 

SQL> insert into tblMember(num, name, age, addr, tel)

  2    values(1,'홍길동',30,'광주시 서구 농성동','010-1111-1111');

            //insert 명령을 이용하여 위의 값을 입력

            //항목간의 구분은 쉼표, 문자열은 작은따옴표로 묶어준다.

            //명령이 끝나면 반드시 세미콜론을 입력한다.

1 row created.

 

SQL> select num, name, age, addr, tel from tblMember;

            //tblMember 테이블의 내용을 검색 후 출력

 

NUM NAME AGE ADDR                         TEL

------------------------------------------------------------------

홍길동 30 광주시 서구 농성동 010-1111-1111

 

SQL> commit;                         //메모리에 입력된 내용을 최종적으로 저장

Commit complete.             //Rollback 명령을 사용할 수 없다.

 

SQL>

 

SQL> drop table tblMember; //tblMember 테이블 제거

 

Table dropped.

 

SQL> desc tblMember;             //tblMember 테이블 구조 출력

ERROR:

ORA-04043: object tblMember does not exist

 

SQL> commit;                                     //작업 내용을 최종적으로 저장

Commit complete.

 

SQL> exit                                     //SQL 종료

Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

 

C:\Users\hanul>

 

 Oracle SQL Developer 설치(SQL 통합개발도구)

   - https://www.oracle.com 접속

   - 상단 검색 창에 “SQL Developer” 입력

   - Oracle SQL Developer Downloads > Windows 32-bit/64-bit 다운로드 후 압축해제

   - sqldeveloper.exe 실행 > JDK 설치된 경로 설정

     

   - 접속 창 > 접속 : 새 데이터베이스 접속

     

  

- 사용자 이름 : hanul

- 비밀번호 : 0000

- ☑ 비밀번호 저장

- 테스트 ▶ 상태 : 성공

- 저장

- 접속

   - 행번호 토글 : 행번호 보이기, 도구 > 환경설정 : 글꼴 ▶ 글꼴 스타일 변경

   - 코딩 후 실행 : 범위 지정 후 Ctrl + Enter 또는 F5

 

○ 데이터베이스 용어 정리

   ▶ 관계형 데이터 모델(RDBMS) : 자료의 저장 형태가 2차원 구조의 표(테이블)로 표현된다.

테이블명 : tblStudent ▶ 릴레이션 이름

학번

이름

주민번호

학과

학년

123456

홍길동

850408-1234567

컴퓨터공학과

4

156123

김길동

900501-2345678

정보통신공학과

2

173456

나길동

920821-1234567

전기전자공학과

1

 

용어

설명

내용

릴레이션

(Relation)

자료 저장의 형태가 2차원 구조의 표

(테이블)로 표현

tblStudent

속성

(Attribute)

릴레이션을 구성하는 각 열

(Column, 항목, Field)

학번, 이름, 주민번호, 학과, 학년의 각각 항목

튜플

(Tuple)

릴레이션의 한 행을 구성하는 속성들의 집합(Tuple, Row, Record)

학생 한명, 한명에 대한 속성 값

도메인

(Domain)

하나의 속성이 가질 수 있는 값의 범위

학년의 경우 1~4만 입력 가능

릴레이션 스키마

(Relation Schema)

릴레이션의 이름과 속성 이름의 집합

(릴레이션 구조)

학번, 이름, 주민번호, 학과, 학년의 집합

릴레이션 인스턴스

(Relation Instance)

릴레이션에 입력된 튜플들의 집합

입력된 레코드의 전체 집합

차수

(Degree)

릴레이션을 구성하는 속성(항목)의 수

5

카디널리티

(Cardinality)

릴레이션에 입력된 튜플(레코드)의 수

3

 

 Oracle SQL 설치 시 주의사항

   - 한글컴퓨터이름, 한글사용자명, 한글폴더 : 실행되지 않는 경우가 많다.

   - 설치 시 암호설정(관리자 ID : system)  0000

   - 사용자 등록(암호) : hanul(0000)  DBA 권한 설정

   - 환경설정파일 ▶ C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN

     listener.ora, tnsnames.ora : HOST(ip), PORT(1521), SERVICE_NAME(XE)  수정하지 말것!!!

   - 컴퓨터 부팅 시 Oracle SQL 관련 프로그램이 구동되어야 한다 : 제어판>관리도구>서비스

     # OracleServiceXE(DB관련), OracleXETNSListener(SQL관련) : 자동으로 구동

     # oracle.exe, TNSLSNR.EXE : 작업관리자(Ctrl+Shift+ESC) > 자세히 > 세부정보 확인가능

 

 Sql Developer에서 워크시트 추가하기

   - 파일 > 새로만들기... > 데이터베이스 계층 > 데이터베이스 파일 ▶ 파일명, 저장위치

   - Alt + F10 > 연결 계정 선택 ▶ 최종적으로 작업 완료 후에 저장

 

[SQL(Structured Query Language, 구조적 질의어) 문법]  20200409.sql

 DDL(Data Definition Language, 정의어)

   - create(생성), drop(제거), alter(구조변경), truncate(데이터영구삭제)

 

 DML(Data Manipulation Language, 조작어)

   - insert(삽입), delete(삭제), update(수정), select(검색)

 

 DCL(Data Control Language, 제어어)

   - grant(권한부여), revoke(권한해제), commit(완료), rollback(복원)

 

[DDL : 데이터 정의어]

 CREATE : 테이블을 생성

   

CREATE TABLE 테이블이름(             //테이블 생성

            컬럼이름1 데이터타입//항목은 콤마로 구분

            컬럼이름2 데이터타입,

            컬럼이름3 데이터타입 //마지막 항목은 콤마 생략

);                                                 //세미콜론으로 마무리

   - CHAR : 고정길이 문자열 ▶ CHAR(숫자)

   - VARCHAR2 : 가변길이 문자열 ▶ VARCHAR2(숫자)

   - NUMBER : 숫자(수치)데이터 ▶ NUMBER → 정수

                                 NUMBER(숫자1, 숫자2) → 정수 : 숫자1, 소수 : 숫자2)

   - DATE : 날짜/시간 형식

 

 DROP : 테이블 제거(영구삭제)

   

DROP TABLE 테이블이름;             //테이블 영구삭제

 

 ALTER : 테이블의 구조를 변경

   

# 항목추가

  ALTER TABLE 테이블명 ADD 추가할컬럼명 데이터타입;

# 항목변경(데이터타입 수정)

  ALTER TABLE 테이블명 MODIFY (수정할컬럼명 데이터타입);

# 항목변경(컬럼명 수정)

  ALTER TABLE 테이블명 RENAME COLUMN 기존컬럼명 TO 변경컬럼명;

# 항목삭제

  ALTER TABLE 테이블명 DROP COLUMN 삭제할컬럼명;

 

데이터베이스프로그래밍 (1).hwp
0.09MB

int red =9;
int blue = 11;
int green =13;

void setup() {
  Serial.begin(9600);
  pinMode(red,OUTPUT);
  pinMode(blue,OUTPUT);
  pinMode(green,OUTPUT);
}

void loop() {
  while(Serial.available()){
    char c = Serial.read();


      Serial.print("입력");
      Serial.print(" : ");
      Serial.println(c);

      if(c=='1'){
        digitalWrite(red,HIGH);
        digitalWrite(green,LOW);
         digitalWrite(blue,LOW);
         Serial.println("1번 클릭");
      }else if(c=='2'){
         digitalWrite(red,LOW);
        digitalWrite(green,HIGH);
         digitalWrite(blue,LOW);
         Serial.println("2번 클릭");
      }else if(c=='3'){
         digitalWrite(red,LOW);
        digitalWrite(green,LOW);
         digitalWrite(blue,HIGH);
         Serial.println("3번 클릭");
      }else if(c=='4'){
         digitalWrite(red,LOW);
        digitalWrite(green,LOW);
         digitalWrite(blue,LOW);
         Serial.println("불 꺼짐");
      }else{
         Serial.println("1~4사이 입력하삼~^^");
      }
  }
  
}

 int val = Serial.parseInt();   // Int 형식으로 받으면 수 통째로 값을 가져온다 만약 숫자가 아닌 값을 입력하면 걍 무시해버림. 숫자와 문자가 혼합되면 split처럼 됨.

int red =9;
int green =13;
int num1;
int chkNum=0;
void setRandom();

void setup() {
  Serial.begin(9600);
  pinMode(red,OUTPUT);
  pinMode(green,OUTPUT);

  setRandom();
//  Serial.println("Making Random Number ...");
//  Serial.println("Let's Start");
//  num1 = random(1,10);    //1~9까지
  Serial.print("랜덤수:");
  Serial.println(num1);

}

void loop() {
  
  if(Serial.available()){
    chkNum = Serial.parseInt();

    if(chkNum == num1){
      Serial.print(chkNum);
      Serial.println(" :Sucess");
        digitalWrite(red,LOW);
    digitalWrite(green,HIGH);
      delay(3000);
        digitalWrite(green,LOW);
        setRandom();
//      Serial.println("Making Random Number");
//      Serial.println("Let's Start");
//      num1 = random(1,10);
       Serial.print("랜덤수:");
  Serial.println(num1);
    }else{
      Serial.print(chkNum);
      Serial.println(" :fail");
      digitalWrite(red,HIGH);
      digitalWrite(green,LOW);
      delay(3000);
      digitalWrite(red,LOW);
    }
  }

}

void setRandom(){
  Serial.println("Making Random Number");
      Serial.println("Let's Start");
      num1 = random(1,10);
}

+ Recent posts