안녕하세요
오늘 처음으로 일반적인 SQL이 아닌
PL/SQL을 처음으로 했습니다.
자바, C, PHP, C++ 같은 프로그래밍만 해봐서 신기했습니다.
오늘은 아주 짧게 글 쓰고 내일부터 길게 쓰겠습니다
=========================================================
SET SERVEROUTPUT ON; -- 이걸 켜줘야 실행결과가 나옴
-- 익명 블럭
DECLARE
--선언부(변수 선언)
I_MSG VARCHAR2(50);
BEGIN
I_MSG := 'HELLO ORACLE~'; -- PL/SQL의 대입 연산자는 ':=' 이다
DBMS_OUTPUT.PUT_LINE(I_MSG);
END;
실행 결과
=======================================================
변수 2개를 선언하세요
1시간전 시간을 변수1에 담고 3시간 후 시간을 변수2에 담아 출력하세요
DECLARE
VDATE1 TIMESTAMP;
VDATE2 TIMESTAMP;
BEGIN
SELECT SYSTIMESTAMP - 1/24 INTO VDATE1 FROM DUAL;
SELECT SYSTIMESTAMP + 3/24 INTO VDATE2 FROM DUAL;
DBMS_OUTPUT.PUT_LINE('한 시간 전 :'||VDATE1);
DBMS_OUTPUT.PUT_LINE('세 시간 후 :'||VDATE2);
END;
=======================================================
SET SERVEROUTPUT ON
CREATE OR REPLACE PROCEDURE EMP_INFO -- 없으면 생성하고 있으면 덮어쓰자
(NUM IN NUMBER)
IS
VNO NUMBER;
VNAME VARCHAR2(20);
VSAL NUMBER;
BEGIN
SELECT EMPNO, ENAME, SAL
INTO VNO, VNAME, VSAL FROM EMP
WHERE EMPNO=NUM; -- 파라미터로 받을 NUM
DBMS_OUTPUT.PUT_LINE('사 번:'||VNO);
DBMS_OUTPUT.PUT_LINE('사원명:'||VNAME);
DBMS_OUTPUT.PUT_LINE('급여 :'||VSAL);
END;
위의 꺼를 먼저 실행하고 아래의 명령문을 실행하세요.
EXECUTE EMP_INFO(7369);
=======================================================
서버와 클라이언트가 통신하는 자바 예제!!
안녕하세요 이번 시간에는
채팅 프로그램의 시발점인 기초 예제를 하나 올려봅니다.
서버와 클라이언트가 간단하게 통신하는 프로그램으로
내일도 이와 관련된 예제를 올리겠습니다.
저도 오늘 기초만 배우는 거라 쉽지가 않네요
소스 파일은 두개로
서버와 클라이언트 두개의 파일로 있습니다.
먼저 서버 파일 부터 올립니다
TCPServer.java ===============================================
/* 서버단
* - ServerSocket과 Socket이 필요
* - 클라이언트가 접속해오면 "행운의 숫자" 를 보내보자
* */
public class TCPServer {
public static void main(String[] args) throws IOException {
//1. 서버 소켓을 생성한다 => 열어놓을 포트번호 필요(특정한 포트 외에는 아무렇게 지정 가능)
ServerSocket server = new ServerSocket(5555);
//2. 서버소켓이 클라이언트의 연결을 기다림
System.out.println("클라이언트 연결을 기다림..");
while(true){
Socket sock=server.accept();
/* 클라이언트가 접속해오기를 기다리고 있다가 클라이언트가 접속해오면
* 클라이언트와 연결된 소켓 객체를 반환한다.
* */
System.out.println("클라이언트가 접속했어요!!");
InetAddress inet=sock.getInetAddress();
System.out.println("클라이언트의 IP: "+inet.getHostAddress());
int num = new Random().nextInt(100)+0; // 0부터 99까지 랜덤하게 발생
//서버가 클라이언트에게 숫자 데이터를 보낸다.
//출력스트림 활용
OutputStream os = sock.getOutputStream();
//자바의 다양한 데이터(자료형)를 보내는 DataOutputStream 활용
DataOutputStream dos = new DataOutputStream(os);
dos.writeInt(num);
dos.flush();
//클라이언트가 보내는 메시지를 듣고 콘솔에 출력하자
InputStream is = sock.getInputStream();
DataInputStream dis = new DataInputStream(is);
System.out.println("From Client>>>"+dis.readUTF());
//원래는 null 체크하고 종료하면 좋음
dos.close(); dis.close();
os.close(); is.close();
if(sock!=null) sock.close();
}
========================================================
그 다음은 클라이언트 파일입니다.
TCPClient.java===============================================
/* 서버단
* - ServerSocket과 Socket이 필요
* - 클라이언트가 접속해오면 "행운의 숫자" 를 보내보자
*
* */
public class TCPClient {
public static void main(String[] args) throws IOException{
Socket sock=new Socket("자신의 ip 주소",5555);
//클라이언트 소켓에서는 서버의 IP주소와 port번호가 필요하다. (집에서 할 때는 cmd->ipconfig->ipv4 주소로 변경하자)
//서버와 연결되면 Socket이 생성되고, 연결이 안되면 예외가 발생됨
System.out.println("서버와 연결됨");
//서버가 보낸 데이터를 듣기 위해 스트림 연결
InputStream is=sock.getInputStream();
DataInputStream dis=new DataInputStream(is);
int num=dis.readInt();
JOptionPane.showMessageDialog(null, "서버가 보내온 행운의 숫자:"+num);
// 서버에게 클라이언트가 메시지를 보내자
java.util.Scanner sc = new java.util.Scanner(System.in);
System.out.println("메시지를 입력하세요=>");
String str=sc.nextLine();
// 출력 스트림 얻기 => sock 통해서
OutputStream os = sock.getOutputStream();
//필터링
DataOutputStream dos=new DataOutputStream(os);
dos.writeUTF(str);
dos.flush();
dos.close();
dis.close();
is.close();
os.close();
sock.close();
}
}
========================================================
자 이번 예제는 먼저 서버부터 실행하고 바로 클라이언트를 실행해야 합니다
이번 예제는 특별히 자바 콘솔창이 아닌 도스창에서 실행하십쇼~!
먼저 서버를 실행하고 클라이언트를 실행하게 되면
클라이언트 창에서 서버가 보내온 행운의 숫자가 출력됩니다.
서버에서는 안녕 서버야 라는 메시지가 출력이 되고
프로그램이 종료됩니다.
일단 서버와 클라이언트가 1대1 통신하는 간단한 예제를 끝으로 오늘 자바 네트워크 포스팅은 끝마치고 다른 포스팅을 올리겠습니다.
내일 다른 네트워크 예제로 뵙겠습니다~!
채팅 프로그램의 시발점인 기초 예제를 하나 올려봅니다.
서버와 클라이언트가 간단하게 통신하는 프로그램으로
내일도 이와 관련된 예제를 올리겠습니다.
저도 오늘 기초만 배우는 거라 쉽지가 않네요
소스 파일은 두개로
서버와 클라이언트 두개의 파일로 있습니다.
먼저 서버 파일 부터 올립니다
TCPServer.java ===============================================
/* 서버단
* - ServerSocket과 Socket이 필요
* - 클라이언트가 접속해오면 "행운의 숫자" 를 보내보자
* */
public class TCPServer {
public static void main(String[] args) throws IOException {
//1. 서버 소켓을 생성한다 => 열어놓을 포트번호 필요(특정한 포트 외에는 아무렇게 지정 가능)
ServerSocket server = new ServerSocket(5555);
//2. 서버소켓이 클라이언트의 연결을 기다림
System.out.println("클라이언트 연결을 기다림..");
while(true){
Socket sock=server.accept();
/* 클라이언트가 접속해오기를 기다리고 있다가 클라이언트가 접속해오면
* 클라이언트와 연결된 소켓 객체를 반환한다.
* */
System.out.println("클라이언트가 접속했어요!!");
InetAddress inet=sock.getInetAddress();
System.out.println("클라이언트의 IP: "+inet.getHostAddress());
int num = new Random().nextInt(100)+0; // 0부터 99까지 랜덤하게 발생
//서버가 클라이언트에게 숫자 데이터를 보낸다.
//출력스트림 활용
OutputStream os = sock.getOutputStream();
//자바의 다양한 데이터(자료형)를 보내는 DataOutputStream 활용
DataOutputStream dos = new DataOutputStream(os);
dos.writeInt(num);
dos.flush();
//클라이언트가 보내는 메시지를 듣고 콘솔에 출력하자
InputStream is = sock.getInputStream();
DataInputStream dis = new DataInputStream(is);
System.out.println("From Client>>>"+dis.readUTF());
//원래는 null 체크하고 종료하면 좋음
dos.close(); dis.close();
os.close(); is.close();
if(sock!=null) sock.close();
}
========================================================
그 다음은 클라이언트 파일입니다.
TCPClient.java===============================================
/* 서버단
* - ServerSocket과 Socket이 필요
* - 클라이언트가 접속해오면 "행운의 숫자" 를 보내보자
*
* */
public class TCPClient {
public static void main(String[] args) throws IOException{
Socket sock=new Socket("자신의 ip 주소",5555);
//클라이언트 소켓에서는 서버의 IP주소와 port번호가 필요하다. (집에서 할 때는 cmd->ipconfig->ipv4 주소로 변경하자)
//서버와 연결되면 Socket이 생성되고, 연결이 안되면 예외가 발생됨
System.out.println("서버와 연결됨");
//서버가 보낸 데이터를 듣기 위해 스트림 연결
InputStream is=sock.getInputStream();
DataInputStream dis=new DataInputStream(is);
int num=dis.readInt();
JOptionPane.showMessageDialog(null, "서버가 보내온 행운의 숫자:"+num);
// 서버에게 클라이언트가 메시지를 보내자
java.util.Scanner sc = new java.util.Scanner(System.in);
System.out.println("메시지를 입력하세요=>");
String str=sc.nextLine();
// 출력 스트림 얻기 => sock 통해서
OutputStream os = sock.getOutputStream();
//필터링
DataOutputStream dos=new DataOutputStream(os);
dos.writeUTF(str);
dos.flush();
dos.close();
dis.close();
is.close();
os.close();
sock.close();
}
}
========================================================
자 이번 예제는 먼저 서버부터 실행하고 바로 클라이언트를 실행해야 합니다
이번 예제는 특별히 자바 콘솔창이 아닌 도스창에서 실행하십쇼~!
먼저 서버를 실행하고 클라이언트를 실행하게 되면
클라이언트 창에서 서버가 보내온 행운의 숫자가 출력됩니다.
그 다음 클라이언트에서 서버에게 '안녕 서버야' 라는 메시지를 전송하게 되면..
서버에서는 안녕 서버야 라는 메시지가 출력이 되고
프로그램이 종료됩니다.
일단 서버와 클라이언트가 1대1 통신하는 간단한 예제를 끝으로 오늘 자바 네트워크 포스팅은 끝마치고 다른 포스팅을 올리겠습니다.
내일 다른 네트워크 예제로 뵙겠습니다~!
인터넷의 이미지를 자바 URL 클래스를 활용하여 얻어와 파일로 저장하기
안녕하세요
이번 시간에는 네이버나 구글, 기타 웹 페이지의 이미지를
URL 클래스를 이용해 담아와
파일로 저장하는 예제를 올려봅니다.
제가 불러들일 이미지는
자 어쨋든 소스코드는 아래와 같습니다.
==========================================================
public class test {
public static void main(String[] args) throws IOException {
String str = "http://imgnews.naver.net/image/020/2016/10/26/81004225.1_99_20161026030722.jpg?type=w540";
URL url=new URL(str);
URLConnection ucon=url.openConnection();
ucon.connect(); // 연결
int fsize=ucon.getContentLength();
System.out.println("파일의 크기 : "+fsize);
String contentType=ucon.getContentType();
System.out.println("파일의 컨텐트 타입 : "+contentType);
InputStream is=ucon.getInputStream(); // 입력스트림을 얻자
//인터넷 상의 이미지 파일을 로컬 컴퓨터로 카피하세요
//에러코드 - 2바이트 스트림(InputStreamReader)을 쓰면 안됨
//InputStreamReader ir = new InputStreamReader(is);
//copy3.jpg
//조금 비효율적
/* File file1 = new File("copy3.jpg");
FileOutputStream fos = new FileOutputStream(file1);*/
//효율적
BufferedInputStream bis=new BufferedInputStream(is);
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("copy3.jpg"));
//count 변수는 파일 크기를 알아보기 위해서임
int input=0, count=0;
byte[] data=new byte[1024];
while((input=bis.read())!=-1){
bos.write(data, 0, input);
bos.flush();
count+=input;
}
bos.close();
bis.close();
is.close();
System.out.println(count+"바이트 카피 완료!");
}
}
==========================================================
실행 결과
이번 시간에는 네이버나 구글, 기타 웹 페이지의 이미지를
URL 클래스를 이용해 담아와
파일로 저장하는 예제를 올려봅니다.
제가 불러들일 이미지는
박근혜 대통령이 이번에 최순실 사태로 국민들에게 고개 숙여 사죄하는 이미지입니다.
여담이지만 대한민국.. 제발 정신좀 차렸으면 좋겠습니다.
정말 안썩은 곳 찾기 힘들 정도로 우리나라 너무 부패합니다.
자 어쨋든 소스코드는 아래와 같습니다.
==========================================================
public class test {
public static void main(String[] args) throws IOException {
String str = "http://imgnews.naver.net/image/020/2016/10/26/81004225.1_99_20161026030722.jpg?type=w540";
URL url=new URL(str);
URLConnection ucon=url.openConnection();
ucon.connect(); // 연결
int fsize=ucon.getContentLength();
System.out.println("파일의 크기 : "+fsize);
String contentType=ucon.getContentType();
System.out.println("파일의 컨텐트 타입 : "+contentType);
InputStream is=ucon.getInputStream(); // 입력스트림을 얻자
//인터넷 상의 이미지 파일을 로컬 컴퓨터로 카피하세요
//에러코드 - 2바이트 스트림(InputStreamReader)을 쓰면 안됨
//InputStreamReader ir = new InputStreamReader(is);
//copy3.jpg
//조금 비효율적
/* File file1 = new File("copy3.jpg");
FileOutputStream fos = new FileOutputStream(file1);*/
//효율적
BufferedInputStream bis=new BufferedInputStream(is);
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("copy3.jpg"));
//count 변수는 파일 크기를 알아보기 위해서임
int input=0, count=0;
byte[] data=new byte[1024];
while((input=bis.read())!=-1){
bos.write(data, 0, input);
bos.flush();
count+=input;
}
bos.close();
bis.close();
is.close();
System.out.println(count+"바이트 카피 완료!");
}
}
==========================================================
실행 결과
콘솔창에는 위와 같이 파일의 크기, 컨텐트 타입 등의 정보가 출력되고
패키지 익스플로러를 새로 고침하면
copy3.jpg 라는 파일이 생성됩니다.
네..
이상으로 포스팅 마치겠습니다~!
네이버 기사의 html 코드를 자바 콘솔창에 보여주고 HTML 파일로 저장시키기
안녕하세요
이번 시간에는 자바의 URI 클래스를 이용하여
네이버 기사를 복사하여 자바 콘솔창에 보여주고,
HTML 파일로 저장 시켜 볼 수 있는 예제를 올려봅니다.
==========================================================
import java.io.IOException;
import java.net.*;
import java.io.*;
public class test {
public static void main(String[] args) {
//wetrNewsDetail.nhn의 nhn은 노출을 피하기 위해 논리적으로 보여주는 이름이고 실제로는 jsp 같은 파일로 구성되어 있음
String urlStr="http://weather.naver.com/news/wetrNewsDetail.nhn?pressId=056&newsId=0010377477";
try{
URL url=new URL(urlStr);
// 위의 url 주소의 프로토콜, 호스트, 포트번호, 경로, 쿼리스트링, 레퍼런스를 알아보자
System.out.println("프로토콜: "+url.getProtocol());
System.out.println("호 스 트: "+url.getHost());
System.out.println("포트번호: "+url.getDefaultPort());
System.out.println("Path : "+url.getPath());
System.out.println("QueryString: "+url.getQuery());
System.out.println("Reference: "+url.getRef());
//위 리소스 파일을 읽어서 copy.html로 저장하고 콘솔에도 출력하자.
//소켓 연결 안해도 가능
InputStream is=url.openStream();
//BufferedReader로 필터링해서 줄단위로 읽고 출력
BufferedReader br=new BufferedReader(new InputStreamReader(is,"UTF-8"));
//콘솔 출력용
PrintWriter pw=new PrintWriter(System.out, true);
//FileWriter fw=new FileWriter("copy.html"); // 파일로 내보낼때 한글 깨짐
OutputStreamWriter fw=new OutputStreamWriter(new FileOutputStream("copy.html"));
String line="";
while((line=br.readLine())!=null){
pw.println(line);
fw.write(line+"\r\n");
fw.flush();
}
br.close();
is.close();
pw.close();
fw.close();
}catch(MalformedURLException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
}
==========================================================
위 소스 코드를 실행하면 두 가지 결과가 나옵니다.
첫번째는 자바 콘솔창에 위의 url 소스의 html 코드가 출력이 됩니다.
그리고 두 번째는 copy.html 이라는 파일이 생성되고 여기에도 html 코드가 있습니다.
아무튼 알아두면 유용한 예제입니다.
이번 시간에는 자바의 URI 클래스를 이용하여
네이버 기사를 복사하여 자바 콘솔창에 보여주고,
HTML 파일로 저장 시켜 볼 수 있는 예제를 올려봅니다.
==========================================================
import java.io.IOException;
import java.net.*;
import java.io.*;
public class test {
public static void main(String[] args) {
//wetrNewsDetail.nhn의 nhn은 노출을 피하기 위해 논리적으로 보여주는 이름이고 실제로는 jsp 같은 파일로 구성되어 있음
String urlStr="http://weather.naver.com/news/wetrNewsDetail.nhn?pressId=056&newsId=0010377477";
try{
URL url=new URL(urlStr);
// 위의 url 주소의 프로토콜, 호스트, 포트번호, 경로, 쿼리스트링, 레퍼런스를 알아보자
System.out.println("프로토콜: "+url.getProtocol());
System.out.println("호 스 트: "+url.getHost());
System.out.println("포트번호: "+url.getDefaultPort());
System.out.println("Path : "+url.getPath());
System.out.println("QueryString: "+url.getQuery());
System.out.println("Reference: "+url.getRef());
//위 리소스 파일을 읽어서 copy.html로 저장하고 콘솔에도 출력하자.
//소켓 연결 안해도 가능
InputStream is=url.openStream();
//BufferedReader로 필터링해서 줄단위로 읽고 출력
BufferedReader br=new BufferedReader(new InputStreamReader(is,"UTF-8"));
//콘솔 출력용
PrintWriter pw=new PrintWriter(System.out, true);
//FileWriter fw=new FileWriter("copy.html"); // 파일로 내보낼때 한글 깨짐
OutputStreamWriter fw=new OutputStreamWriter(new FileOutputStream("copy.html"));
String line="";
while((line=br.readLine())!=null){
pw.println(line);
fw.write(line+"\r\n");
fw.flush();
}
br.close();
is.close();
pw.close();
fw.close();
}catch(MalformedURLException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
}
==========================================================
위 소스 코드를 실행하면 두 가지 결과가 나옵니다.
첫번째는 자바 콘솔창에 위의 url 소스의 html 코드가 출력이 됩니다.
그리고 두 번째는 copy.html 이라는 파일이 생성되고 여기에도 html 코드가 있습니다.
아무튼 알아두면 유용한 예제입니다.
네이버와 다음의 호스트 이름과 IP 주소를 알아보자 (자바 InetAddress 클래스를 활용)
안녕하세요
이번 시간에는 자바 네트워크 부분에 대해 글을 쓸까 합니다.
오늘 글 쓰는거는 자바 네트워크와 관련된거로 보시면 됩니다.
그리고 쉬는 날에 다시 자바 jdbc를 좀 더 다룰까 합니다.
어쨋든 잘 봐주십쇼~!
이론적인 부분은 제가 한번 올리고
오늘 올리는 것들은 자바 네트워크 예제와 주석입니다
========================================================
import java.net.*;
public class test {
public static void main(String[] args) {
/* InetAddress 클래스
* -IP를 추상화한 클래스
* -new에서 생성하는 것이 아니라 static 메소드로 얻는다.*/
try{
InetAddress inet=InetAddress.getByName("www.naver.com");
System.out.println("호스트 이름 : "+inet.getHostName());
System.out.println("호스트 IP 주소 : "+inet.getHostAddress());
/* IP주소 : 컴퓨터(호스트)를 구별하는 데 사용되는 고유한 주소값
* 4바이트 정수로 a.b.c.d와 같은 형식으로 표현하며
* (a,b,c,d는 0~255의 정수값)
* */
// 이 호스트 네임을 사용하고 있는 주소들을 배열로 저장하자
InetAddress[] inets=InetAddress.getAllByName("www.daum.net");
if(inets!=null){
for(InetAddress ia:inets){
System.out.println("호스트 명 : "+ia.getHostName());
System.out.println("IP 주소 : "+ia.getHostAddress());
}
}
}catch(UnknownHostException e){ // 이 부분을 명시하지 않으면 에러 발생
e.printStackTrace();
}
}
}
========================================================
실행 결과
이번 시간에는 자바 네트워크 부분에 대해 글을 쓸까 합니다.
오늘 글 쓰는거는 자바 네트워크와 관련된거로 보시면 됩니다.
그리고 쉬는 날에 다시 자바 jdbc를 좀 더 다룰까 합니다.
어쨋든 잘 봐주십쇼~!
이론적인 부분은 제가 한번 올리고
오늘 올리는 것들은 자바 네트워크 예제와 주석입니다
========================================================
import java.net.*;
public class test {
public static void main(String[] args) {
/* InetAddress 클래스
* -IP를 추상화한 클래스
* -new에서 생성하는 것이 아니라 static 메소드로 얻는다.*/
try{
InetAddress inet=InetAddress.getByName("www.naver.com");
System.out.println("호스트 이름 : "+inet.getHostName());
System.out.println("호스트 IP 주소 : "+inet.getHostAddress());
/* IP주소 : 컴퓨터(호스트)를 구별하는 데 사용되는 고유한 주소값
* 4바이트 정수로 a.b.c.d와 같은 형식으로 표현하며
* (a,b,c,d는 0~255의 정수값)
* */
// 이 호스트 네임을 사용하고 있는 주소들을 배열로 저장하자
InetAddress[] inets=InetAddress.getAllByName("www.daum.net");
if(inets!=null){
for(InetAddress ia:inets){
System.out.println("호스트 명 : "+ia.getHostName());
System.out.println("IP 주소 : "+ia.getHostAddress());
}
}
}catch(UnknownHostException e){ // 이 부분을 명시하지 않으면 에러 발생
e.printStackTrace();
}
}
}
========================================================
실행 결과
네이버와 다음의 IP 주소는 위와 같이 나오네요
네이버는 공통적으로 나오는 것 같은데..
다음은 컴퓨터마다 다르게 나온것 같았습니다..
나중에 한번 그 이유를 알아보겠습니다
자바 Update문을 활용하여 db의 데이터 수정하기
안녕하세요
이번 시간에는 자바에서 Update문을 활용하여
SQL Develop문의 db 데이터를 수정하는 예제를 올려봅니다.
이번 예제도 앞선 예제와 크게 다른 바가 sql문만 차이가 있습니다.
자 그럼 예제를 보시죠
==========================================================
public class Test {
public static void main(String[] args) throws Exception {
//Memo 테이블의 내용을 수정하자 (작성자, 메모내용, 작성일)
Scanner sc = new Scanner(System.in);
System.out.println("수정할 글번호 입력=>"); // PK = WHERE 조건절
int idx = sc.nextInt();
System.out.println("수정할 작성자 입력=>");
String name = sc.next();
sc.skip("\r\n"); // 엔터값 건너뛰기
System.out.println("수정할 메모내용 입력=>");
String msg = sc.nextLine();
System.out.println(idx+"/"+name+"/"+msg);
FileReader fr = new FileReader("DB.properties");
Properties p = new Properties();
p.load(fr);
// 드라이버 로드
Class.forName(p.getProperty("driver"));
String url = p.getProperty("dburl");
String user = p.getProperty("user");
String pwd = p.getProperty("pwd");
Connection con = DriverManager.getConnection(url, user, pwd);
System.out.println("DB연결 성공");
//STMT 얻기
Statement stmt = con.createStatement();
//SQL문 작성 => UPDATE문
//String sql = "UPDATE MEMO SET NAME='"+name+"'" + ", MSG='"+msg+"'" + " where idx='"+idx+"'";
String sql = "UPDATE MEMO SET NAME='"+name+"',";
sql+=" msg='"+msg+"', wdate=SYSDATE WHERE idx="+idx;
System.out.println(sql);
//실행-> dml문 int executeUpdate()
int cnt = stmt.executeUpdate(sql);
String str=(cnt>0)?"수정 성공":"수정 실패-글 번호가 없어요";
System.out.println(str);
//DB연결 종료
stmt.close();
con.close();
sc.close();
}
}
==========================================================
-실행 결과-
이번 시간에는 자바에서 Update문을 활용하여
SQL Develop문의 db 데이터를 수정하는 예제를 올려봅니다.
이번 예제도 앞선 예제와 크게 다른 바가 sql문만 차이가 있습니다.
자 그럼 예제를 보시죠
==========================================================
public class Test {
public static void main(String[] args) throws Exception {
//Memo 테이블의 내용을 수정하자 (작성자, 메모내용, 작성일)
Scanner sc = new Scanner(System.in);
System.out.println("수정할 글번호 입력=>"); // PK = WHERE 조건절
int idx = sc.nextInt();
System.out.println("수정할 작성자 입력=>");
String name = sc.next();
sc.skip("\r\n"); // 엔터값 건너뛰기
System.out.println("수정할 메모내용 입력=>");
String msg = sc.nextLine();
System.out.println(idx+"/"+name+"/"+msg);
FileReader fr = new FileReader("DB.properties");
Properties p = new Properties();
p.load(fr);
// 드라이버 로드
Class.forName(p.getProperty("driver"));
String url = p.getProperty("dburl");
String user = p.getProperty("user");
String pwd = p.getProperty("pwd");
Connection con = DriverManager.getConnection(url, user, pwd);
System.out.println("DB연결 성공");
//STMT 얻기
Statement stmt = con.createStatement();
//SQL문 작성 => UPDATE문
//String sql = "UPDATE MEMO SET NAME='"+name+"'" + ", MSG='"+msg+"'" + " where idx='"+idx+"'";
String sql = "UPDATE MEMO SET NAME='"+name+"',";
sql+=" msg='"+msg+"', wdate=SYSDATE WHERE idx="+idx;
System.out.println(sql);
//실행-> dml문 int executeUpdate()
int cnt = stmt.executeUpdate(sql);
String str=(cnt>0)?"수정 성공":"수정 실패-글 번호가 없어요";
System.out.println(str);
//DB연결 종료
stmt.close();
con.close();
sc.close();
}
}
==========================================================
-실행 결과-
SQL Developer에서 memo 테이블을 조회한 화면입니다.
데이터가 참 많죠.
저는 여기서 idx가 15번인 행의 데이터를 변경해보겠습니다.
작성자를 '박근혜' 로 수정할 메모내용 입력을 '대통령'으로 바꾸겠습니다.
위의 그림을 보면 성공적으로 변경 됬다는 것을 알 수 있습니다.
자 그럼 sql developer에 가서 다시 한번 확인해 봅시다
select * from memo를 한 결과 맨 첫번째 15번째 idx 번호의 데이터가
변경 됬다는 것을 알 수 있습니다.
자바 jdbc를 활용하여 해당 부서의 사원 정보를 출력하는 프로그램을 작성하세요
안녕하세요
이번 시간에는 자바 jdbc와 오라클을 활용하여
해당 부서의 사번, 사원명, 부서명, 업무, 급여, 근무지의 사원 정보를 출력하는 자바 프로그램 예제를 올려보겠습니다.
여기서 잠깐..
지금 같은 예제는 소스를 복사해서 붙여넣는다고 하여 실행되는것이 아니라
오라클 (sql developer)에 'EMP' 테이블과 'DEPT' 테이블이 있어야 가능합니다.
EMP, DEPT 테이블은 직접 만들어보셔서 테스트 해보시면 됩니다
테이블 만드는건 어렵지 않죠~
자 그럼 예제와 실행 결과 화면을 올려보겠습니다
렛츠고~!!
========================================================
public class test {
public static void main(String[] args) throws Exception {
String deptno = JOptionPane.showInputDialog("검색하고자 하는 부서번호를 입력하세요");
// 해당 부서의 사원 정보를 출력하는 프로그램을 작성하세요
// 사번, 사원명, 부서명, 업무, 급여, 근무지 - select (emp,dept와 조인)
//1. 드라이버 로딩
Class.forName("oracle:jdbc:driver:OracleDriver");
//2. DB연결
String url="jdbc:oracle:thin:@localhost:1521:ORCL";
String user="scott", pwd="tiger";
Connection con=DriverManager.getConnection(url, user, pwd);
System.out.println("DB에 연결");
//3. Statement 얻기
Statement stmt = con.createStatement();
//4. sql문 작성(select문, join문)
String sql = "SELECT e.deptno, empno, ename, dname, job, sal, loc "
+" FROM EMP E JOIN DEPT D"
+" ON E.DEPTNO=D.DEPTNO"
+" WHERE E.DEPTNO= "+deptno;
System.out.println(sql);
//5. 실행-executeXXXX()
ResultSet rs = stmt.executeQuery(sql);
System.out.println("-----------------------------------------------------------------------");
System.out.println("dno"+"\t"+"empno"+"\t"+"ename"+"\t"+"dname"+"\t"+"job"+"\t"+"sal"+"\t"+"loc");
//6. 실행 결과 데이터 가져와 출력하기
while(rs.next()){
int dno=rs.getInt(1);
int empno=rs.getInt(2);
String ename=rs.getString(3);
String dname=rs.getString(4);
String job=rs.getString(5);
float sal=rs.getFloat(6);
String loc=rs.getString(7);
System.out.println(dno+"\t"+empno+"\t"+ename+"\t"+dname+"\t"+job+"\t"+sal+"\t"+loc);
}
System.out.println("-----------------------------------------------------------------------");
//7. close
rs.close();
stmt.close();
con.close();
}
}
========================================================
위의 소스 코드를 실행하면 아래와 같은 화면이 자바 콘솔창에 출력됩니다
이번 시간에는 자바 jdbc와 오라클을 활용하여
해당 부서의 사번, 사원명, 부서명, 업무, 급여, 근무지의 사원 정보를 출력하는 자바 프로그램 예제를 올려보겠습니다.
여기서 잠깐..
지금 같은 예제는 소스를 복사해서 붙여넣는다고 하여 실행되는것이 아니라
오라클 (sql developer)에 'EMP' 테이블과 'DEPT' 테이블이 있어야 가능합니다.
EMP, DEPT 테이블은 직접 만들어보셔서 테스트 해보시면 됩니다
테이블 만드는건 어렵지 않죠~
자 그럼 예제와 실행 결과 화면을 올려보겠습니다
렛츠고~!!
========================================================
public class test {
public static void main(String[] args) throws Exception {
String deptno = JOptionPane.showInputDialog("검색하고자 하는 부서번호를 입력하세요");
// 해당 부서의 사원 정보를 출력하는 프로그램을 작성하세요
// 사번, 사원명, 부서명, 업무, 급여, 근무지 - select (emp,dept와 조인)
//1. 드라이버 로딩
Class.forName("oracle:jdbc:driver:OracleDriver");
//2. DB연결
String url="jdbc:oracle:thin:@localhost:1521:ORCL";
String user="scott", pwd="tiger";
Connection con=DriverManager.getConnection(url, user, pwd);
System.out.println("DB에 연결");
//3. Statement 얻기
Statement stmt = con.createStatement();
//4. sql문 작성(select문, join문)
String sql = "SELECT e.deptno, empno, ename, dname, job, sal, loc "
+" FROM EMP E JOIN DEPT D"
+" ON E.DEPTNO=D.DEPTNO"
+" WHERE E.DEPTNO= "+deptno;
System.out.println(sql);
//5. 실행-executeXXXX()
ResultSet rs = stmt.executeQuery(sql);
System.out.println("-----------------------------------------------------------------------");
System.out.println("dno"+"\t"+"empno"+"\t"+"ename"+"\t"+"dname"+"\t"+"job"+"\t"+"sal"+"\t"+"loc");
//6. 실행 결과 데이터 가져와 출력하기
while(rs.next()){
int dno=rs.getInt(1);
int empno=rs.getInt(2);
String ename=rs.getString(3);
String dname=rs.getString(4);
String job=rs.getString(5);
float sal=rs.getFloat(6);
String loc=rs.getString(7);
System.out.println(dno+"\t"+empno+"\t"+ename+"\t"+dname+"\t"+job+"\t"+sal+"\t"+loc);
}
System.out.println("-----------------------------------------------------------------------");
//7. close
rs.close();
stmt.close();
con.close();
}
}
========================================================
위의 소스 코드를 실행하면 아래와 같은 화면이 자바 콘솔창에 출력됩니다
부서번호를 입력하라는 콘솔창이 뜨면 10,20,30번 부서 중에
30번 부서번호를 입력하게 되면
30번 부서의 정보가 출력되면서 프로그램은 끝이 나게 됩니다
DB.properties 파일을 생성하여 자바로 테이블을 delete 하는 예제
안녕하세요
이번 시간에는 기존의 방식과는 달리 테이블에 데이터를 수정하는 예제입니다
데이터를 삭제 할 때 DB.properties라는 파일을 추가하여
데이터를 삭제해보겠씁니다.
잘 봐주세요~!!
패키지 익스플로러에 파일을 추가해서 위와 같이 작성하고 저장하자
========================================================
public class test {
public static void main(String[] args) throws Exception {
//DB.properties 파일과 스트림 연결
FileReader fr = new FileReader("DB.properties");
Properties prop = new Properties();
//키 값과 벨류값을 매핑하여 저장한다.
prop.load(fr);
//DB.properties 파일 내용이 Properties 객체에 저장됨
Class.forName(prop.getProperty("driver"));
String url=prop.getProperty("dburl");
String user=prop.getProperty("user");
String pwd=prop.getProperty("pwd");
Connection con = DriverManager.getConnection(url,user,pwd);
System.out.println("DB 연결 성공");
// 삭제할 글번호를 입력받는다.=>JOPtionPane 이용
String idxStr=JOptionPane.showInputDialog("삭제할 글 번호를 입력하세요");
//Statement 얻어오기
Statement stmt = con.createStatement();
String sql = "delete from memo where idx = '"+idxStr+"'";
System.out.println(sql);
/*DML문장 (INSERT, DELETE, UPDATE문)인 경우
* public int executeUpdate(String sql) 메소드를 활용한다.
* sql문에 의해 영향 받은 레코드수를 반환한다.
* select 할 때는 쓰지 않는다.
*/
int delCount=stmt.executeUpdate(sql);
System.out.println("삭제된 레코드수 : " + delCount);
if(delCount>0){
System.out.println("삭제 처리됨");
}else{
System.out.println("삭제 실패 : 글번호가 존재하지 않아요");
}
if(stmt!=null) stmt.close();
if(con!=null) con.close();
}
}
========================================================
위의 소스 코드를 실행하면 다음과 같습니다.
먼저 sql developer에서 select * from memo로 메모 테이블을 조회하면
5개의 행이 있습니다.
소스 코드를 실행하면 맨 처음에 삭제할 글 번호를 입력하라는 알림창이 나옵니다.
전 5번째 행 데이터를 지워보겠습니다.
잠시후 자바 콘솔 창에는 5번째 레코드가 삭제되었다는 메시지가 뜹니다.
자 그럼 sql developer에서 확인을 해보겠습니다.
5번째에 있던 네이버 데이터가 사라졌습니다.
성공적으로 삭제가 됬습니다.
자바 jdbc에서 데이터를 Insert 해보자
안녕하세요
이번 시간에는 자바 JDBC에서 데이터를 INSERT 하는 예제를 만들어
오라클 환경에 있는 데이터베이스의 memo 테이블에 데이터를 삽입하는 예제를
올려봅니다.
이 예제도 select문과 비슷한 로직이지만 메소드에 조금 차이가 있으니
신경 써서 보십쇼~!
========================================================
public class test {
public static void main(String[] args) throws Exception {
// 메모 테이블에 메모 내용을 등록해보자.
String name = JOptionPane.showInputDialog("작성자를 입력하세요");
String msg = JOptionPane.showInputDialog("메모 내용을 입력하세요");
//1. 드라이버 로딩
Class.forName("oracle:jdbc.driver.OracleDriver");
System.out.println("드라이버 로딩 성공");
//2. DB연결=> Connection 얻기 (DriverManager통해서)
String url = "jdbc:oracle:thin:@localhost:1521:ORCL";
String user="scott", pwd="tiger";
Connection con = DriverManager.getConnection(url,user,pwd);
System.out.println("DB에 연결");
//3. Statement 얻기 => Connection 통해서
Statement stmt = con.createStatement();
//4. SQL문 작성 => INSERT문 작성
String sql = "INSERT INTO MEMO(idx, name, msg, wdate)";
sql += " VALUES(5, " + "'"+name+"', '"+msg+"',sysdate)";
System.out.println(sql);
//5. executeUpdate()메소드로 전송
int cnt=stmt.executeUpdate(sql);
System.out.println(cnt>0?"등록 성공":"등록 실패");
//6. DB 자원 반납
stmt.close(); con.close();
}
}
========================================================
위의 예제를 실행하면 아래와 같은 결과를 얻게 됩니다
이번 시간에는 자바 JDBC에서 데이터를 INSERT 하는 예제를 만들어
오라클 환경에 있는 데이터베이스의 memo 테이블에 데이터를 삽입하는 예제를
올려봅니다.
이 예제도 select문과 비슷한 로직이지만 메소드에 조금 차이가 있으니
신경 써서 보십쇼~!
========================================================
public class test {
public static void main(String[] args) throws Exception {
// 메모 테이블에 메모 내용을 등록해보자.
String name = JOptionPane.showInputDialog("작성자를 입력하세요");
String msg = JOptionPane.showInputDialog("메모 내용을 입력하세요");
//1. 드라이버 로딩
Class.forName("oracle:jdbc.driver.OracleDriver");
System.out.println("드라이버 로딩 성공");
//2. DB연결=> Connection 얻기 (DriverManager통해서)
String url = "jdbc:oracle:thin:@localhost:1521:ORCL";
String user="scott", pwd="tiger";
Connection con = DriverManager.getConnection(url,user,pwd);
System.out.println("DB에 연결");
//3. Statement 얻기 => Connection 통해서
Statement stmt = con.createStatement();
//4. SQL문 작성 => INSERT문 작성
String sql = "INSERT INTO MEMO(idx, name, msg, wdate)";
sql += " VALUES(5, " + "'"+name+"', '"+msg+"',sysdate)";
System.out.println(sql);
//5. executeUpdate()메소드로 전송
int cnt=stmt.executeUpdate(sql);
System.out.println(cnt>0?"등록 성공":"등록 실패");
//6. DB 자원 반납
stmt.close(); con.close();
}
}
========================================================
위의 예제를 실행하면 아래와 같은 결과를 얻게 됩니다
select * from memo;
를 해서 나온 결과입니다.
현재 4개의 데이터만 있습니다.
작성자에 네이버를, 메모 내용에 포털사이트 라고 입력하면
memo 테이블에 name, msg 필드에 데이터를 추가하게 됩니다
자바 콘솔창에서는 위와 같은 출력문이 나오게 되고
sql developer 에서 select문으로 memo 테이블을 조회하게 되면
맨 마지막 필드에 네이버, 포털사이트 가 추가된것을 알 수 있습니다.
자바 JDBC로 데이터를 조회하는 Select문 활용
안녕하세요
이번 시간에는 테이블의 데이터를 조회 할 수 있는 데이터베이스의 Select문을
자바에 접목하여 자바에서도 오라클에 있는 db 정보를 조회 할 수 있는 예제를 올려봅니다.
잘 봐주세요~!!
=========================================================
public class test {
public static void main(String[] args) throws Exception {
//1. 드라이버 로딩 - odjbc7.jar
//=> Class.forName("패기지경로.드라이버명")메소드를 이용
// 자바와 오라클의 통역관(OracleDriver)
Class.forName("oracle:jdbc:driver:OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:ORCL";
//프로토콜:oracle:드라이버타입:@호스트:포트번호:SID
//url은 DBMS사마다 다르다.
String user="scott", pwd="tiger";
//2. DB와 연결: DriverManager.getConnection()
Connection con = DriverManager.getConnection(url,user,pwd);
System.out.println("DB연결됨");
//3. DB에 SQL문을 전송하기 위해 Statement 객체를 얻어온다.
Statement stmt = con.createStatement();
//4. SQL문 작성
String sql = "SELECT idx, name, msg, wdate FROM memo ORDER BY 1";
//DML 문장(INSERT, DELETE, UDPATE) => int executeUpdate(sql) / 반환 타입 int
//DQL 문장(SELECT문)=> ResultSet executeQuery(sql) / 반환 타입 ResultSet
//5. sql문을 DB에 전송(실행)
ResultSet rs = stmt.executeQuery(sql); // 결과 테이블 반환
System.out.println("--------------------------------------------------");
System.out.println("idx"+"\t"+"name"+"\t"+"msg"+"\t\t"+"wdate");
//ResultSet의 메소드
/*boolean next() : rs의 논리적 커서는 첫번째 행의 직전에 위치한다
=> before first
next()가 호출되면 커서를 다음으로 이동시킨다.
이동시켜 가리키는 지점에 레코드가 있으면 true를 반환, 없으면 false를 반환한다.
---------------------------------
자료형 getXXX("컬럼명") : 해당 컬럼 값을 꺼낼 때 호출
이 때 오라클 자료형과 자바 자료형을 맞춰서 꺼내오자
*/
while(rs.next()){// memo 테이블 1번 레코드 직전에 위치해서 next가 다음 칸으로 이동(첫번째 행을 가리킴)
// 메모 테이블에 컬럼 데이터를 뽑아오기
int idx=rs.getInt("idx"); // memo 테이블에 글번호값 받기
String name=rs.getString("name"); // 작성자
String msg=rs.getString("msg"); // 메모 내용
java.sql.Date wdate = rs.getDate("wdate"); //작성일
System.out.println(idx+"\t"+name+"\t"+msg+"\t"+wdate);
}
System.out.println("--------------------------------------------------");
//6. DB자원 반납 - 순서 지켜야 함
rs.close();
stmt.close();
con.close();
}
}
========================================================
위의 문장을 실행하면 아래와 같습니다.
memo 테이블에 있는 idx, name, msg, wdate 컬럼을 가지고 와 출력하면서
프로그램은 종료됩니다.
위의 예제는 사용자가 프로그램에 직접 개입하지 않고 단순히 조회하는 예제입니다
하지만 다음 예제는 사용자가 작성자 명을 입력하면 그 영역을 찾아주는 예제입니다
위의 예제와 비슷합니다만 그래도 유용합니다
검색할 작성자명에 '길' 이라는 키워드를 입력하면
이름에 '길' 이 들어가 있는 데이터 영역 다 보여주기
========================================================
public class test {
public static void main(String[] args) throws Exception {
Class.forName("oracle:jdbc:driver:OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:ORCL";
String user="scott", pwd="tiger";
Connection con = DriverManager.getConnection(url,user,pwd);
System.out.println("DB연결됨");
Statement stmt = con.createStatement();
String input_name = JOptionPane.showInputDialog("검색할 작성자명을 입력하세요");
// 특정 작성자가 쓴 글만 출력하세요 => where절 select문
//String sql = "SELECT idx,name,msg,wdate FROM memo WHERE name = " + "'"+input_name+"'";
// '길' 자가 입력되면 홍길동, 김길동.. 글이 모두 나오게.
String sql2 = "SELECT idx,name,msg,wdate FROM memo"
+" WHERE name LIKE '%" + input_name +"%'";
ResultSet rs = stmt.executeQuery(sql2);
System.out.println("----"+input_name+"님 글 검색 결과-------");
while(rs.next()){
int idx=rs.getInt(1);
String name=rs.getString(2);
String msg=rs.getString(3);
Date wdate=rs.getDate(4);
System.out.println(idx+"\t"+name+"\t"+msg+"\t"+wdate);
}
System.out.println("------------------------------");
// 순서 지켜야함
rs.close();
stmt.close();
con.close();
}
}
========================================================
위의 소스 코드를 실행하면 아래 그림과 같습니다
'길' 이라는 단어를 입력하면..
이번 시간에는 테이블의 데이터를 조회 할 수 있는 데이터베이스의 Select문을
자바에 접목하여 자바에서도 오라클에 있는 db 정보를 조회 할 수 있는 예제를 올려봅니다.
잘 봐주세요~!!
=========================================================
public class test {
public static void main(String[] args) throws Exception {
//1. 드라이버 로딩 - odjbc7.jar
//=> Class.forName("패기지경로.드라이버명")메소드를 이용
// 자바와 오라클의 통역관(OracleDriver)
Class.forName("oracle:jdbc:driver:OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:ORCL";
//프로토콜:oracle:드라이버타입:@호스트:포트번호:SID
//url은 DBMS사마다 다르다.
String user="scott", pwd="tiger";
//2. DB와 연결: DriverManager.getConnection()
Connection con = DriverManager.getConnection(url,user,pwd);
System.out.println("DB연결됨");
//3. DB에 SQL문을 전송하기 위해 Statement 객체를 얻어온다.
Statement stmt = con.createStatement();
//4. SQL문 작성
String sql = "SELECT idx, name, msg, wdate FROM memo ORDER BY 1";
//DML 문장(INSERT, DELETE, UDPATE) => int executeUpdate(sql) / 반환 타입 int
//DQL 문장(SELECT문)=> ResultSet executeQuery(sql) / 반환 타입 ResultSet
//5. sql문을 DB에 전송(실행)
ResultSet rs = stmt.executeQuery(sql); // 결과 테이블 반환
System.out.println("--------------------------------------------------");
System.out.println("idx"+"\t"+"name"+"\t"+"msg"+"\t\t"+"wdate");
//ResultSet의 메소드
/*boolean next() : rs의 논리적 커서는 첫번째 행의 직전에 위치한다
=> before first
next()가 호출되면 커서를 다음으로 이동시킨다.
이동시켜 가리키는 지점에 레코드가 있으면 true를 반환, 없으면 false를 반환한다.
---------------------------------
자료형 getXXX("컬럼명") : 해당 컬럼 값을 꺼낼 때 호출
이 때 오라클 자료형과 자바 자료형을 맞춰서 꺼내오자
*/
while(rs.next()){// memo 테이블 1번 레코드 직전에 위치해서 next가 다음 칸으로 이동(첫번째 행을 가리킴)
// 메모 테이블에 컬럼 데이터를 뽑아오기
int idx=rs.getInt("idx"); // memo 테이블에 글번호값 받기
String name=rs.getString("name"); // 작성자
String msg=rs.getString("msg"); // 메모 내용
java.sql.Date wdate = rs.getDate("wdate"); //작성일
System.out.println(idx+"\t"+name+"\t"+msg+"\t"+wdate);
}
System.out.println("--------------------------------------------------");
//6. DB자원 반납 - 순서 지켜야 함
rs.close();
stmt.close();
con.close();
}
}
========================================================
위의 문장을 실행하면 아래와 같습니다.
memo 테이블에 있는 idx, name, msg, wdate 컬럼을 가지고 와 출력하면서
프로그램은 종료됩니다.
위의 예제는 사용자가 프로그램에 직접 개입하지 않고 단순히 조회하는 예제입니다
하지만 다음 예제는 사용자가 작성자 명을 입력하면 그 영역을 찾아주는 예제입니다
위의 예제와 비슷합니다만 그래도 유용합니다
검색할 작성자명에 '길' 이라는 키워드를 입력하면
이름에 '길' 이 들어가 있는 데이터 영역 다 보여주기
========================================================
public class test {
public static void main(String[] args) throws Exception {
Class.forName("oracle:jdbc:driver:OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:ORCL";
String user="scott", pwd="tiger";
Connection con = DriverManager.getConnection(url,user,pwd);
System.out.println("DB연결됨");
Statement stmt = con.createStatement();
String input_name = JOptionPane.showInputDialog("검색할 작성자명을 입력하세요");
// 특정 작성자가 쓴 글만 출력하세요 => where절 select문
//String sql = "SELECT idx,name,msg,wdate FROM memo WHERE name = " + "'"+input_name+"'";
// '길' 자가 입력되면 홍길동, 김길동.. 글이 모두 나오게.
String sql2 = "SELECT idx,name,msg,wdate FROM memo"
+" WHERE name LIKE '%" + input_name +"%'";
ResultSet rs = stmt.executeQuery(sql2);
System.out.println("----"+input_name+"님 글 검색 결과-------");
while(rs.next()){
int idx=rs.getInt(1);
String name=rs.getString(2);
String msg=rs.getString(3);
Date wdate=rs.getDate(4);
System.out.println(idx+"\t"+name+"\t"+msg+"\t"+wdate);
}
System.out.println("------------------------------");
// 순서 지켜야함
rs.close();
stmt.close();
con.close();
}
}
========================================================
위의 소스 코드를 실행하면 아래 그림과 같습니다
'길' 이라는 단어를 입력하면..
Memo 테이블에 name 필드에 '길' 이라는 이름이 전부 다 조회된다
자바 JDBC 설치법. 따라하기만 하면 100% 됨
안녕하세요
이번 시간에는 정말 유용한 자바와 오라클 연동 방법입니다.
쉽게 말해서 자바와 데이터베이스를 연동하는 것이죠
저도 옛날에 도전해봤는데, 잘 못해서 헤맸는데
얼마전에 확실히 방법을 알아서
이렇게 올려봅니다.
일단 본격적으로 설치법을 올리기 전에
먼저 깔아야 할게 있습니다.
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/database12c-win64-download-2297732.html
위의 오라클 사이트 경로로 들어가서..
2. C:\Java\jre1.8.0_102\lib\ext 경로에 가서 복사 한 파일 붙여넣기
(자바를 실행하기 전에 먼저 SQL Developer에서 테이블을 하나 생성하자)
5. INSERT 문을 수행하는 자바 예제를 실행해보자
코드는 아래와 같다
이번 시간에는 정말 유용한 자바와 오라클 연동 방법입니다.
쉽게 말해서 자바와 데이터베이스를 연동하는 것이죠
저도 옛날에 도전해봤는데, 잘 못해서 헤맸는데
얼마전에 확실히 방법을 알아서
이렇게 올려봅니다.
일단 본격적으로 설치법을 올리기 전에
먼저 깔아야 할게 있습니다.
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/database12c-win64-download-2297732.html
위의 오라클 사이트 경로로 들어가서..
위 두 개의 파일을 다운받으세요
오라클 설치법은 다른 블로그를 보시면 됩니다. 굉장히 쉽습니다
자 그럼 오라클이 설치되었다고 가정하고 설치법을 올리겠습니다.
1. JDBC 드라이버 경로에서 ojdbc7.jar 파일 복사
2. C:\Java\jre1.8.0_102\lib\ext 경로에 가서 복사 한 파일 붙여넣기
3. CLASS PATH 설정 ' .;C:\JAVA\jre\lib\ext\ojdbc7.jar '
((3.5. 오라클 서버 실행 실행창에서 services.msc 치고 OracleServiceOrcl 시작, XXXXlistener 시작 (JDBCTest.java)))
보통 오라클을 설치 할 때 자동으로 실행 상태로 되기 때문에 이 작업은 필요없다
하지만 컴퓨터를 부팅할 때 오라클 서비스도 시작을 하기 때문에 부팅 속도가 조금 늦어
실행 상태를 수동으로 맞추는 경우가 많다
이 3.5 과정이 귀찮으면 그냥 자동으로 맞춰서 해도 무방하다.
4. JRE System Library 우 클릭하여 'Configure Build Path' 클릭
JRE System Libary [jre...] 우측에 Edit.. 버튼 클릭
두번째 Alternate JRE 옆에 Installed JREs... 클릭
Edit을 눌러 경로를 바꾸자(C:\JAVA\jre) – ojdbc7.jar 파일 있는 곳으로
(자바를 실행하기 전에 먼저 SQL Developer에서 테이블을 하나 생성하자)
5. INSERT 문을 수행하는 자바 예제를 실행해보자
코드는 아래와 같다
=======================================================
package jdbc.day1;
import java.sql.*;
public class MyFirstJDBC {
public static void main(String[] args) throws ClassNotFoundException, SQLException{
//1. 드라이버 로딩 Class.forName("oracle.jdbc.driver.OracleDriver"); System.out.println(" 드라이버 로딩 성공");
//2. DB 연결 String url="jdbc:oracle:thin:@localhost:1521:ORCL"; String user="scott"; String pwd="tiger"; Connection con = DriverManager.getConnection(url,user,pwd); System.out.println("DB Connected..");
//3. Statement 얻어오기 Statement stmt=con.createStatement();
//4. 전송할 쿼리문(SQL문) 작성 String sql="INSERT INTO memo(idx,name,msg)"; sql+=" VALUES(1,'홍길동',' 첫번째 글입니다.*^.^*')"; System.out.println(sql);
//5. execute() 메소드로 실행 boolean isRs=stmt.execute(sql); System.out.println("isRs="+isRs);
//6. close() stmt.close(); con.close();
}
}
========================================================
6. SQL Developer에서 select문으로 조회를 하면 데이터가 들어가 있음
Oracle SQL Developer 첫 시작!! 테이블 생성(CREATE),조회(SELECT),삽입(INSERT)
안녕하세요
오늘부터는 오라클 SQL문 예제를 조금씩 올려볼까 합니다.
실행 환경은 많이 쓰이는 Oracle SQL Developer 입니다.
지금까지 db 관련된 툴을 사용했을 때 도스 화면과 같은 창에서만 실행했는데
윈도우 느낌이 물씬 나는 환경에서 DB를 다루는건 이번이 처음이네요.
어쨋든 오늘은 테이블을 생성하고, 조회하고, 데이터를 추가하고 제거하는 간단한
SQL 문장을 올려봅니다.
테이블 생성 문장
CREATE TABLE 테이블명(
속성명 자료형(크기) [제약조건]
);
=========================================================
학생 테이블 생성을 생성
CREATE TABLE student(
IDX NUMBER(4) PRIMARY KEY,
NAME VARCHAR2(20) NOT NULL,
TEL VARCHAR(20),
CNAME VARCHAR2(30),
ROOM NUMBER(3),
INDATE DATE
);
실행 결과
데이터 추가(INSERT문 활용)
INSERT INTO student(IDX,NAME,TEL,CNAME,ROOM)
VALUES(1, '홍길동', '02-3333-5555', '자바개발자반', 401);
INSERT INTO student(IDX,NAME,TEL,CNAME,ROOM,INDATE)
VALUES(2, '임길동', '010-9999-0231', '방송영상반', 402, SYSDATE);
=========================================================
select문과 where 절의 활용 예제
--자바반의 학생정보(학번,이름,학급명,교실)를 보여주세요
select IDX,NAME,CNAME,ROOM from student where CNAME='자바개발자반';
--방송영상반의 학번,이름,학급명,등록일을 보여주세요
select IDX,NAME,CNAME,SYSDATE from student where CNAME='방송영상반';
--홍길동의 정보만 보여주세요
select * from student where NAME='홍길동';
--순서대로 정렬(asc=오름차순 / desc=내림차순)
select * from student order by idx desc;
데이터 수정(UPDATE문)
--홍길동의 연락처가 '010-5678-9999'로 변경되었어요 수정하세요(where절을 빼면 전부 다 바뀜 ㄷㄷ) / 취소는 rollback
update student set tel = '010-5678-9999' where name='홍길동';
--임길동의 학급을 자바개발자반, 교실 401호로 변경하세요
update student set CNAME='자바개발자반', ROOM='401' where name='임길동';
=========================================================
데이터 삭제 (delete문)
delete from student where name='임길동';
오늘부터는 오라클 SQL문 예제를 조금씩 올려볼까 합니다.
실행 환경은 많이 쓰이는 Oracle SQL Developer 입니다.
지금까지 db 관련된 툴을 사용했을 때 도스 화면과 같은 창에서만 실행했는데
윈도우 느낌이 물씬 나는 환경에서 DB를 다루는건 이번이 처음이네요.
어쨋든 오늘은 테이블을 생성하고, 조회하고, 데이터를 추가하고 제거하는 간단한
SQL 문장을 올려봅니다.
테이블 생성 문장
CREATE TABLE 테이블명(
속성명 자료형(크기) [제약조건]
);
=========================================================
학생 테이블 생성을 생성
CREATE TABLE student(
IDX NUMBER(4) PRIMARY KEY,
NAME VARCHAR2(20) NOT NULL,
TEL VARCHAR(20),
CNAME VARCHAR2(30),
ROOM NUMBER(3),
INDATE DATE
);
실행 결과
=========================================================
데이터 추가(INSERT문 활용)
INSERT INTO student(IDX,NAME,TEL,CNAME,ROOM)
VALUES(1, '홍길동', '02-3333-5555', '자바개발자반', 401);
INSERT INTO student(IDX,NAME,TEL,CNAME,ROOM,INDATE)
VALUES(2, '임길동', '010-9999-0231', '방송영상반', 402, SYSDATE);
=========================================================
student 테이블에 추가 된 데이터를 조회해 보자
select * from student;
=========================================================
오라클에서는 테이블에 데이터를 추가 했으면 그걸로 끝난게 아닙니다
반드시 commit을 해줘야 데이터가 테이블에 확실히 들어갑니다.
명렁어는 다음과 같습니다.
COMMIT;
=========================================================
select문과 where 절의 활용 예제
--자바반의 학생정보(학번,이름,학급명,교실)를 보여주세요
select IDX,NAME,CNAME,ROOM from student where CNAME='자바개발자반';
--방송영상반의 학번,이름,학급명,등록일을 보여주세요
select IDX,NAME,CNAME,SYSDATE from student where CNAME='방송영상반';
--홍길동의 정보만 보여주세요
select * from student where NAME='홍길동';
--순서대로 정렬(asc=오름차순 / desc=내림차순)
select * from student order by idx desc;
=========================================================
--홍길동의 연락처가 '010-5678-9999'로 변경되었어요 수정하세요(where절을 빼면 전부 다 바뀜 ㄷㄷ) / 취소는 rollback
update student set tel = '010-5678-9999' where name='홍길동';
--임길동의 학급을 자바개발자반, 교실 401호로 변경하세요
update student set CNAME='자바개발자반', ROOM='401' where name='임길동';
select * from student;
delete from student where name='임길동';
피드 구독하기:
글 (Atom)