LCD
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//연결된 아두이노 핀 번호로 lcd모듈을 초기화한다.
void setup() {
lcd.begin(16, 2); //16열 2행의 lcd모듈 설정
lcd.print("Hello!");
}
void loop() {
lcd.setCursor(0, 1); //0열 1행에 커서를 설정
lcd.print("Good Luck!!");
lcd.print(millis() / 1000);
delay(10);
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
//초음파 센서로 거리 측정해서 물체가 50cm 이내로 가까이 왔을 때
//액정 2행에 경고 메시지를 출력;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//연결된 아두이노 핀 번호로 lcd모듈을 초기화한다.
void setup() {
lcd.begin(16, 2); //16열 2행의 lcd모듈 설정
}
void loop() {
pinMode(9,OUTPUT);
digitalWrite(9,LOW);
delayMicroseconds(2);
digitalWrite(9,HIGH);
delayMicroseconds(5);
digitalWrite(9,LOW);
pinMode(9,INPUT);
double duration = pulseIn(9,HIGH);
double cm = duration * 340 / 10000 / 2;
lcd.setCursor(0, 1); //0열 1행에 커서를 설정
if(cm<=50)
{
lcd.print("Warning");
}else{
lcd.clear();
}
delay(10);
}
PIEZO
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//연결된 아두이노 핀 번호로 lcd모듈을 초기화한다.
const int PIEZO=8;
const int melody[]={ //도레미파솔라시도
262,
294,
330,
349,
392,
440,
494,
523
};
void alarmMelody(){
for(int i=0;i<8;i++){
tone(PIEZO,melody[i],500);
//8번 단자에 음의 길이 0.5초
delay(500);
}
}
void setup() {
lcd.begin(16, 2); //16열 2행의 lcd모듈 설정
}
void loop() {
pinMode(9,OUTPUT);
digitalWrite(9,LOW);
delayMicroseconds(2);
digitalWrite(9,HIGH);
delayMicroseconds(5);
digitalWrite(9,LOW);
pinMode(9,INPUT);
double duration = pulseIn(9,HIGH);
double cm = duration * 340 / 10000 / 2;
//0열 1행에 커서를 설정
if(cm<=50)
{
alarmMelody();
lcd.setCursor(0, 0);
lcd.print("Warning");
lcd.setCursor(0, 1);
lcd.print("Warning");
}else{
lcd.clear();
}
delay(10);
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
JDBC
(Java Database Connectivity)
Java와 Databasd 연동하는 애플리케이션을 구현할 수 있도록 하는 API
좁은 의미로는 java.sql 패키지를 의미한다.
- java.sql 패키지에는 80%가 interface 임
- 해당 인터페이스를 각 DBMS 사의 개발자들이 상속받아 구현을 하는데 이를 드라이버라고 함
- jdbc를 하려면 일단 각 DBMS사에 가서 JDBC Driver를 다운로드 받아 설치해야 한다.
1) Oracle 사이트에서 jdbc driver 다운로드 하든지
2) 우리는 oracle을 설치했으므로
C:\Program Files\Java\jdk1.8.0_202\jre\lib\ext아래 복사하여 붙여넣기
3) classpath에 위의 경로를 추가한다.
제어판 -> 시스템 -> 고급 ->환경변수 ->classpath 찾아 편집
C:\Program Files\Java\jdk1.8.0_202\jre\lib\ext\ojdbc6.jar
//jdbc : 프로토콜
//oracle : dbms유형
//thin : 드라이버 타입, 순수하게 자바로 구현되 드라이버
//@localhost : DB서버의 ip주소
//1521 : 오라클 리스너가 열어놓은 포트번호 (DBMS사마다 포트번호는 다름)
//XE : 전역데이터베이스 이름(SID)
package jdbc.day01;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
class JDBCTest
{
public static void main(String args[])
{
try {
//1. 오라클 드라이버 로딩
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("Driver Loading Success!!");
//2. DB와 연결
String url = "jdbc:oracle:thin:@localhost:1521:XE";
String user = "scott", pwd="tiger";
Connection con = DriverManager.getConnection(url,user,pwd);
System.out.println("DB 연결 성공");
//3. sql문 작성
//한줄 메모장 테이블을 생성하는 문장을 작성
String sql = "CREATE TABLE memo(";
sql+="idx number(4) primary key,"; //글번호
sql+="name varchar2(30) not null,"; //작성자
sql+="msg varchar2(100),";
sql+="wdate date default sysdate)";
//4. sql문을 실행하기위한 Statement객체 얻어오기
//==> Connection의 createStatement()메소드를 이용
Statement stmt = con.createStatement();
//5. sql문을 실행
//Statement의 execute()메소드를 이용
boolean b=stmt.execute(sql);
System.out.println("b= "+b);
System.out.println("Memo테이블 생성 성공!!");
//6. DB와 연결된 자원을 반납
if(stmt!= null) stmt.close();
if(con!=null) con.close();
} catch (ClassNotFoundException e) {
System.out.println("드라이버 로딩 실패!");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("SQL오류 : Memo테이블이 생성되어 있는지 확인");
e.printStackTrace();
}
}
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
PL/SQL
--사번을 인 파라미터로 받아들여 해당 사원의 이름과 부서번호 부서명을 출력하는
--프로시저를 작성
CREATE OR REPLACE PROCEDURE EMP_SEARCH(PNO IN EMP.EMPNO%TYPE)
IS
VNAME EMP.ENAME%TYPE;
VDNO EMP.DEPTNO%TYPE;
VDNAME VARCHAR2(30);
BEGIN
SELECT ENAME,DEPTNO INTO VNAME,VDNO FROM EMP
WHERE EMPNO=PNO;
--VDNO가 10번과 같으면 VDNAME에 '회계부서'값을 할당
--20번이면'연구부서', 30분 ' 영업부서', 40번'운영부서', 그외 '교육부서'
--사번,사원명, 부서번호, 부서명 출력
IF VDNO=10 THEN VDNAME:='회계부서';
ELSIF VDNO=20 THEN VDNAME:='연구부서';
ELSIF VDNO=30 THEN VDNAME:='영업부서';
ELSIF VDNO=40 THEN VDNAME:='운영부서';
ELSE VDNAME:='교육부서';
END IF;
DBMS_OUTPUT.PUT_LINE(PNO||LPAD(VNAME,15,' ')||LPAD(VDNAME,15,' ')||LPAD(VDNO,15,' '));
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE(PNO||'사원은 존재하지 않음');
END;
/
EXECUTE EMP_SEARCH(7788);
SET SERVEROUTPUT ON;
반복문
DECLARE
BEGIN
FOR I IN 1 ..10 LOOP
DBMS_OUTPUT.PUT_LINE(I);
END LOOP;
END;
/
DECLARE
BEGIN
FOR I REVERSE 1 ..10 LOOP
DBMS_OUTPUT.PUT_LINE(I);
END LOOP;
END;
/
--EMP2테이블에 EMPNO, ENAME, HIREDATE를 삽입하는 프로시저 작성하기
DECLARE
BEGIN
FOR I IN 100..105 LOOP
INSERT INTO EMP2(EMPNO,ENAME,HIREDATE) VALUES(I,'TOM'||I,sysdate);
END LOOP;
END;
/
select * from emp2;
FOR 반복문
CREATE OR REPLACE PROCEDURE DEPT_ALL
IS
VDNO DEPT.DEPTNO%TYPE;
VDNAME DEPT.DNAME%TYPE;
VLOC DEPT.LOC%TYPE;
BEGIN
/*SELECT DEPTNO, DNAME, LOC INTO VDNO, VDNAME, VLOC
FROM DEPT ORDER BY DEPTNO ASC;
DBMS_OUTPUT.PUT_LINE(VDNO||' '||VDNAME||' '||VLOC);*/
FOR K IN (SELECT * FROM DEPT ORDER BY DEPTNO ASC) LOOP
DBMS_OUTPUT.PUT_LINE(K.DEPTNO||' '||K.DNAME||' '||K.LOC);
END LOOP;
EXCEPTION
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('검색 된 데이터가 2건 이상입니다. 커서를 이용하세요');
END;
/
EXECUTE DEPT_ALL;
WHILE LOOP문
DECLARE
CNT NUMBER(3):=10;
BEGIN
WHILE CNT<60 LOOP
INSERT INTO EMP2(EMPNO,ENAME,HIREDATE)
VALUES (CNT,'TEST'||CNT,SYSDATE);
CNT := CNT+5;
END LOOP;
FOR K IN (SELECT EMPNO,ENAME,HIREDATE FROM EMP2 ORDER BY 3 DESC) LOOP
DBMS_OUTPUT.PUT_LINE(K.EMPNO||LPAD(K.ENAME,15,' ')||LPAD(K.ENAME,15,' '));
END LOOP;
END;
/
EXIT 조건
DECLARE
VCNT NUMBER(3) :=50;
BEGIN
LOOP
INSERT INTO DEPT2(DEPTNO,DNAME,LOC)
VALUES(VCNT,'SALES'||VCNT,'LA');
VCNT := VCNT+10;
EXIT WHEN VCNT >80;
END LOOP;
END;
/
DESC DEPT2;
select * from dept2;
'개발자 > 국비지원 SW' 카테고리의 다른 글
국비지원 36일차 - PreparedStatement, MVC패턴 사원관리 프로그램, CURSOR, 암시적 CURSOR, PL/SQL 오류의 종류, function (0) | 2020.06.04 |
---|---|
국비지원 35일차 - JDBC INSERT, UPDATE, SELECT ,PL/SQL 테이블 타입, 레코드 타입 (0) | 2020.06.03 |
국비지원 33일차 - DC 모터, Servo 모터, 초음파 센서, PL/SQL (0) | 2020.06.01 |
국비지원 32일차 - PIR센서, 펄스 폭 변조(PWM), analog예제, 객체 권한, ROLE (0) | 2020.05.29 |
국비지원 31일차 - 배열 포인터, 구조체, 인덱스, 시스템 권한 (0) | 2020.05.28 |