[๊ตฌ๋””์•„์นด๋ฐ๋ฏธ IT๊ตญ๋น„์ง€์›] ์ •๋ณด์€๋‹‰๊ณผ ์บก์Šํ™”์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๊ณ , ์˜ค๋ผํด์„ ์„ค์น˜ํ•˜๊ณ  ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด์•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚จ๋Š” ์‹œ๊ฐ„์— ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ํšŒ์›์ „์šฉ ๊ฒŒ์‹œํŒ ํ”„๋กœ์ ํŠธ ์ž‘์—…์„ ํ–ˆ๋‹ค.


๐Ÿ’ก ์บก์Šํ™”

์บก์Šํ™”๋Š” ์ •๋ณด์€๋‹‰์˜ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์ •๋ณด์€๋‹‰์€ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๋ฅผ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋นผ๋†“์„ ์ˆ˜ ์—†๋Š” ๊ฐœ๋…์ด๋‹ค.
๋ง๊ทธ๋Œ€๋กœ ์šฐ๋ฆฌ๊ฐ€ ๋จน๋Š” ์•Œ์•ฝ์„ ๋– ์˜ฌ๋ฆฌ๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค. ์™ธ๋ถ€์—์„œ ํ•จ๋ถ€๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋„๋ก ์บก์Š ์•ˆ์— ์ˆจ๊ฒจ๋†“๋Š” ๊ฒƒ์ธ๋ฐ, ์ˆจ๊ฒจ๋†“์€ ๊ฒƒ์„ ์ œํ•œ๋œ ์กฐ๊ฑด์—์„œ ๊บผ๋‚ด๋ณด์—ฌ์ค„ ์ˆ˜๋„ ์žˆ๋‹ค.

๐Ÿ“Œ ํ•„๋“œ ์ •๋ณด์€๋‹‰

package vo;

public class Data {
	public int x;
	public int y;
}

์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ์จ์˜จ ๋ฐฉ๋ฒ•๋Œ€๋กœ Data ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•ด๋ณด์•˜๋‹ค.

package vo;

public class Data2 {
	// ์ •๋ณด์€๋‹‰์˜ ๋‹จ๊ณ„ private - default - protected - public
	public int x;
	private int y;
}

์ด๋ฒˆ์—๋Š” ์ผ๋ถ€๋ฅผ ์ •๋ณด์€๋‹‰ํ•˜์—ฌ Data2 ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•ด๋ณด์•˜๋‹ค.
์ •๋ณด์€๋‹‰์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ ‘๊ทผ์ œ์–ด์ž๊ฐ€ ํ•„์š”ํ•œ๋ฐ, ์ด ์ ‘๊ทผ์ œ์–ด์ž๋Š” 4๋‹จ๊ณ„๋กœ ๋‚˜๋‰œ๋‹ค.

  • ์ ‘๊ทผ์ œ์–ด์ž
    • public : ๋ชจ๋“  ์ ‘๊ทผ์„ ํ—ˆ์šฉ
    • protected : ๊ฐ™์€ ํŒจํ‚ค์ง€์— ์žˆ๋Š” ๊ฐ์ฒด์™€ ์ƒ์†๊ด€๊ณ„์˜ ๊ฐ์ฒด ํ—ˆ์šฉ
    • default : ๊ฐ™์€ ํŒจํ‚ค์ง€์— ์žˆ๋Š” ๊ฐ์ฒด๋งŒ ํ—ˆ์šฉ
    • private : ํ˜„์žฌ ๊ฐ์ฒด ๋‚ด(ํด๋ž˜์Šค ๋‚ด๋ถ€)์—์„œ๋งŒ ํ—ˆ์šฉ (์™ธ๋ถ€์—์„œ ์ ‘๊ทผX)

// ํ•„๋“œ๊ฐ€ ์ •๋ณด์€๋‹‰์ด ๋˜์ง€ ์•Š์€ Data ํด๋ž˜์Šค
Data d = new Data();
d.x = 7;
d.y = 10;
System.out.println(d.x);
System.out.println(d.y);

// ์ •๋ณด์€๋‹‰์ด ๋˜์—ˆ์„ ๊ฒฝ์šฐ (private) ์™ธ๋ถ€์—์„œ ์ฝ๊ณ  ์“ฐ๊ธฐ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค
Data2 d2 = new Data2();
d2.x = 7;
// d2.y = 10;
System.out.println(d2.x);
// System.out.println(d2.y);

Data ํด๋ž˜์Šค๋Š” public์ด๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๋ถ€์—์„œ ์ฝ๊ณ  ์“ฐ๊ธฐ(์ˆ˜์ •)๊ฐ€ ์ž์œ ๋กญ๋‹ค.
ํ•˜์ง€๋งŒ Data2 ํด๋ž˜์Šค์˜ private ์ ‘๊ทผ์ œ์–ด์ž๋กœ ์„ค์ •ํ•œ y๋Š” ์ฝ๊ณ  ์“ฐ๊ธฐ๊ฐ€ ๋ชจ๋‘ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


โœ” ํ•„๋“œ ์บก์Šํ™”

๊ทธ๋ ‡๋‹ค๋ฉด private์œผ๋กœ ์ •๋ณด์€๋‹‰ํ•œ ํด๋ž˜์Šค๋ฅผ ์™ธ๋ถ€์—์„œ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๊ณ  ์‹ถ์œผ๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? ์ด๋•Œ ์“ฐ์ด๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ์บก์Šํ™”์ด๋‹ค.

package vo;
//ํ•„๋“œ ์ •๋ณด์€๋‹‰ + ํ•„๋“œ ์บก์Šํ™”
public class Data3 {
	// ์ •๋ณด์€๋‹‰
	private int x;
	private int y;
	
	// ์บก์Šํ™”
	// ์ฝ๊ธฐ ์บก์Šํ™” ๋ฉ”์„œ๋“œ
	public int getX() {
		return this.x; // this ์‚ฌ์šฉ์‹œ ์ƒ์„ฑ๋œ ๊ฐ์ฒด(์ž๊ธฐ์ž์‹ )์„ ๊ฐ€๋ฅดํ‚ด
	}
	public int getY() {
		return this.y;
	}
	// ์“ฐ๊ธฐ ์บก์Šํ™” ๋ฉ”์„œ๋“œ
	public void setX(int x) {
		this.x = x;
	}
	public void setY(int y) {
		this.y = y;
	}
}

getter ๋ฉ”์„œ๋“œ๋กœ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์™€ ์ฝ๊ณ , setter ๋ฉ”์„œ๋“œ๋กœ ๊ฐ’์„ ๋ณ€๊ฒฝํ•œ๋‹ค. ํ˜„์žฌ ์ด ๋ฉ”์„œ๋“œ๋“ค์€ public์œผ๋กœ ์„ค์ •๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๋ถ€์—์„œ๋„ ์ฝ๊ณ  ์“ฐ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
this ๋ฉ”์„œ๋“œ๋Š” ์ž๊ธฐ ์ž์‹ , ์ฆ‰ ์ƒ์„ฑ๋œ ํ˜„์žฌ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฅดํ‚จ๋‹ค.

์ž๋™์œผ๋กœ get, set ์†Œ์Šค์ฝ”๋“œ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•
: ๋งˆ์šฐ์Šค ์šฐํด๋ฆญ - Sorce - Generate Gets and Sets ๋ฅผ ์„ ํƒํ•˜์—ฌ ์ƒ์„ฑํ•  ํ•ญ๋ชฉ์„ ์ฒดํฌํ•˜๋ฉด ๋!

๋งŒ์•ฝ์— ์ œํ•œ๋œ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๊ฐ’์„ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด get, set ๋ฉ”์„œ๋“œ์— if๋ฌธ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค!

Data3 d1 = new Data3();
Data3 d2 = new Data3();
	
// d1.x = 1;
// d2.x = 100;
	
d1.setX(777);
d2.setX(444);
	
System.out.println(d1.getX()); // this๋Š” d1์„ ๊ฐ€๋ฆฌํ‚ด
System.out.println(d2.getX()); // this๋Š” d2๋ฅผ ๊ฐ€๋ฆฌํ‚ด

private์œผ๋กœ ์„ค์ •๋˜์—ˆ์ง€๋งŒ get, set ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€์—์„œ ๊ฐ’์„ ์ฝ๊ณ  ์“ด ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ“Œ ๋ฉ”์„œ๋“œ ์ •๋ณด์€๋‹‰ + ์บก์Šํ™”

์šฐ๋ฆฌ๋Š” ํด๋ž˜์Šค๊ฐ€ ๋ฉ”์„œ๋“œ์˜ ์ƒ์ž์—ญํ• ์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฐ์› ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹น์—ฐํžˆ ๋ฉ”์„œ๋“œ๋„ ์ •๋ณด์€๋‹‰๊ณผ ์บก์Šํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค!

package vo;

public class A {
	private String getFirstName() {
		return "๊ตฌ๋””";
	}
	private String getSecondName() {
		return "์•„์นด๋ฐ๋ฏธ";
	}
	public String getFullName() {
		return this.getFirstName() + this.getSecondName();
	}
}

FirstName๊ณผ SecondName์€ ์™ธ๋ถ€์—์„œ ํ•จ๋ถ€๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋„๋ก private์œผ๋กœ ์„ค์ •ํ•˜๊ณ , ์ด ๋‘˜์˜ ๊ฐ’์„ ํ•ฉ์ณ์„œ ๋ณด์—ฌ์ค„ FullName ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ public์œผ๋กœ ๋‘”๋‹ค.

A a = new A();

String name = a.getFullName();
System.out.println(name);

get๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€์—์„œ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.



package vo;
import java.util.Calendar;

public class Person {
	private int birth; // ์ •๋ณด์€๋‹‰ (ํ•„๋“œ ์€๋‹‰)
	
	/*
	private int getBirth() { // ์ •๋ณด์€๋‹‰ (๋ฉ”์„œ๋“œ getter ์€๋‹‰)
		return birth;
	}
	*/
	
	public void setBirth(int birth) {
		if(birth > 0) {
			this.birth = birth;
		}
	}
	
	public int getAge() { // ์บก์Šํ™”
		if(this.birth > 0) {
			Calendar c = Calendar.getInstance();
			int y = c.get(Calendar.YEAR);
			return y - this.birth;
		}
	return 0;
	}
}

birth์— ๋…„๋„๋ฅผ ์ž…๋ ฅ(set)ํ•˜๋ฉด ๋‚˜์ด๋ฅผ ๋ฐ˜ํ™˜(get)ํ•˜๋Š” age ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค. ์ด๋•Œ, ๋‹จ์ˆœํžˆ ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›๋Š” birth๋Š” ํ•„๋“œ ์ •๋ณด์€๋‹‰์ด๊ณ  ์กฐ๊ฑด(if)์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค. ์˜ค๋Š˜ ๋‚ ์งœ๋…„๋„์—์„œ ์ž…๋ ฅ๋ฐ›์€ ๋…„๋„๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์‹์ด ๋“ค์–ด๊ฐ€๋Š” age๋Š” ๋ฉ”์„œ๋“œ ์ •๋ณด์€๋‹‰์ด๋‹ค.

Person kyh = new Person();
kyh.setBirth(1995);

// System.out.println(kyh.birth); ์ •๋ณด์€๋‹‰๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ
	
System.out.println(kyh.getAge());

birth์— ์ž…๋ ฅํ•œ ๊ฐ’์€ private๋กœ ์ •๋ณด์€๋‹‰ ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ถœ๋ ฅํ•  ์ˆ˜ ์—†์ง€๋งŒ, ์ด ๊ฐ’์„ ์ด์šฉํ•œ age๋ฉ”์„œ๋“œ๋Š” get์œผ๋กœ ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค!


๐Ÿ’ก ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (RDBMS)


1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
๋…ผ๋ฆฌ์  ๋‹จ์œ„(ํ–‰)๋กœ ์ด๋ฃจ์–ด์ง„ ๊ด€๋ จ ์ •๋ณด์˜ ์ง‘ํ•ฉ(ํ–‰์˜ ์ง‘ํ•ฉ)
์ง€์ธ์˜ ์ „ํ™”๋ฒˆํ˜ธ์™€ ์ฃผ์†Œ๋ฅผ ๊ธฐ๋กํ•ด(ํ…Œ์ด๋ธ” ํ˜•ํƒœ) ๋†“์€ ๋ฌธ์„œ(์ฃผ์†Œ๋ก)

  • ๋ฐœ์ƒ ์ด์Šˆ
    1. ํ•ญ๋ชฉ(ํ–‰)์ˆ˜๊ฐ€ ๋งŽ์œผ๋ฉด ์›ํ•˜๋Š” ์‚ฌ๋žŒ์˜ ์ •๋ณด๋ฅผ ์ฐพ๋Š”๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.
    2. ์ด๋ฆ„์œผ๋กœ ์ƒ‰์ธ์ด ๋˜์–ด ์žˆ๋‹ค๋ฉด ์ „ํ™”๋ฒˆํ˜ธ๋‚˜ ์ฃผ์†Œ๋งŒ์„ ๊ฐ€์ง€๊ณ  ์‚ฌ๋žŒ์„ ์ฐพ๋Š”๋‹ค๋Š” ๊ฒƒ์€ ํšจ์œจ์ ์ด์ง€ ๋ชปํ•˜๋‹ค.
    3. ์ถœ๋ ฅ๋œ(๋ฌธ์„œํ™”)์ดํ›„์— ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •/์‚ญ์ œ๊ฐ€ ํž˜๋“ค๋‹ค.

--> ์ „์‚ฐํ™”๋œ ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ๊ฒ€์ƒ‰ ๋งค์ปค๋‹ˆ์ฆ˜ ์‹œ์Šคํ…œ์ด ํ•„์š” --> ํŒŒ์ผ์‹œ์Šคํ…œ(ex ์—‘์…€) --> ํŒŒ์ผ์‹œ์Šคํ…œ์˜ ํ•œ๊ณ„(ํŒŒ์ผ์˜ ๋ถ€์žฌ, ๋‹จ์ผ์ ‘๊ทผ, ์›๊ฒฉ์ ‘๊ทผ, ....) --> ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ --> ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌ --> ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ(RDBMS)

2. ๊ด€๊ณ„ํ˜• ๋ชจ๋ธ
๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ”์˜ ์ง‘ํ•ฉ์œผ๋กœ ํ‘œํ˜„
ํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ จ ์—”ํ„ฐํ‹ฐ(entity):ํ–‰ ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋Œ€์‹ , ์ค‘๋ณต๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋กœ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๋ ˆ๊ณ ๋“œ:ํ–‰๋ฅผ ์—ฐ๊ฒฐ

  • ํฌ์ธํŠธ ์ ‘๊ทผ : ํ™๊ธธ๋™ํ•™์ƒ์ด ์ˆ˜๊ฐ•ํ•œ ๊ณผ์ • ํ…Œ์ด๋ธ”์— ์ฒซ๋ฒˆ์žฌ ํ–‰์ด๋‹ค

  • ์ค‘๋ณต๋ฐ์ดํ„ฐ(key) ์ ‘๊ทผ : ํ™๊ธธ๋™ํ•™์ƒ์ด ์ˆ˜๊ฐ•ํ•œ ๊ณผ์ •์ด๋ฆ„์ด sqld์ด๋‹ค(๊ณผ์ •์ด๋ฆ„์ด ํ•™์ƒํ…Œ์ด๋ธ”๊ณผ ๊ณผ์ •ํ…Œ์ด๋ธ”์— ์ค‘๋ณต๋˜์–ด ์ €์žฅ)


์ถœ์ฒ˜: 0509) ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (์ž๋ฐ” ๊ต์‹ค) | ์ž‘์„ฑ์ž ๋ฐ•์„ฑํ™˜


๐Ÿ’ก ์˜ค๋ผํด ์„ค์น˜

๋‹ค์–‘ํ•œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด ์žˆ์ง€๋งŒ ๊ทธ๋™์•ˆ์€ mariadb๋ฅผ ์‚ฌ์šฉํ•ด์™”๋‹ค. ์ด๋ฒˆ์—๋Š” ์˜ค๋ผํด์„ ์„ค์น˜ํ•ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค.

๐Ÿ“Œ ์˜ค๋ผํด

์„ค์น˜๋Š” ์ด๊ณณ์—์„œ ํ–ˆ๋‹ค.

์„ค์น˜ ํ›„ ์••์ถ•์„ ํ’€์–ด์ค€ ๋’ค setup ํŒŒ์ผ์„ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค


์„ค์น˜ ์ค‘ ์˜ค๋ผํด ์„œ๋ฒ„ ์„œ๋น„์Šค ํฌํŠธ๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.



mariadb์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์„ค์น˜ ํ™•์ธ์€ ์ด๊ณณ์—์„œ ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿ“Œ sql developer

mariadb๋Š” ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์ด ์ž๋™์œผ๋กœ ์„ค์น˜๊ฐ€ ๋˜์—ˆ์ง€๋งŒ ์˜ค๋ผํด์„ ๋ณ„๋„๋กœ ์„ค์น˜ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์„ค์น˜๋Š” ์ด๊ณณ์—์„œ ํ–ˆ๋‹ค.


jdk๊ฐ€ ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋‘๋ฒˆ์งธ ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›์•˜๋‹ค.


๋ณ„๋„์˜ ์„ค์น˜๊ณผ์ • ์—†์ด ๋‹ค์šด ๋ฐ›์€ ํด๋”์˜ ์••์ถ•์„ ํ’€์–ด exe ํŒŒ์ผ์„ ์‹คํ–‰ํ•œ๋‹ค.

๐Ÿ“Œ ๊ณ„์ • ์ƒ์„ฑ

๋จผ์ € ๊ด€๋ฆฌ์ž ๊ณ„์ •์œผ๋กœ ์ ‘์†ํ•œ๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์„ค์น˜์‹œ ์ž…๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

CREATE USER ๊ณ„์ •์ด๋ฆ„์ž…๋ ฅ IDENTIFIED BY ๋น„๋ฐ€๋ฒˆํ˜ธ์ž…๋ ฅ;  
GRANT connect, resource, dba to ๊ณ„์ •์ด๋ฆ„์ž…๋ ฅ;

๊ด€๋ฆฌ์ž ๊ณ„์ •์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฌธ์„ ์ž…๋ ฅํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ณ„์ •์„ ์ƒ์„ฑํ•ด์ค€๋’ค ์ƒ์„ฑํ•œ ๊ณ„์ •์œผ๋กœ ๋‹ค์‹œ ์ ‘์†ํ•˜๋ฉด ๋œ๋‹ค!


๐Ÿ“Œ ์ƒ˜ํ”Œ๋ฐ์ดํ„ฐ ์ž…๋ ฅ

CREATE TABLE DEPT(
    DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
    DNAME VARCHAR2(14),
    LOC VARCHAR2(13) 
);

CREATE TABLE EMP(
    EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
	ENAME VARCHAR2(10),
	JOB VARCHAR2(9),
	MGR NUMBER(4),
	HIREDATE DATE,
	SAL NUMBER(7,2),
	COMM NUMBER(7,2),
	DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT
);



-- deptํ…Œ์ด๋ธ” 4๊ฐœ์˜ ํ–‰์„ ์ž…๋ ฅ
INSERT INTO DEPT(deptno,dname,loc) VALUES(10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT(deptno,dname,loc) VALUES(20,'RESEARCH','DALLAS');
INSERT INTO DEPT(deptno,dname,loc) VALUES(30,'SALES','CHICAGO');
INSERT INTO DEPT(deptno,dname,loc) VALUES(40,'OPERATIONS','BOSTON');
INSERT INTO dept(deptno,dname,loc) VALUES(50,'IT', 'NEW YORK');

select * from dept;

commit;

-- empํ…Œ์ด๋ธ” : insert๋ฌธ์—์„œ ํ…Œ์ด๋ธ”์ด๋ฆ„๋’ค ์ปฌ๋Ÿผ๋ช…์„ ์ƒ๋žตํ•˜๋ฉด ์ „์ฒด ์ปฌ๋Ÿผ์„ ๊ฐ€๋ฅดํ‚ด
INSERT INTO EMP VALUES
(7369,'SMITH','CLERK',7902,to_date('17-12-2000','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMP VALUES
(7499,'ALLEN','SALESMAN',7698,to_date('20-2-2001','dd-mm-yyyy'),1600,300,30);
INSERT INTO EMP VALUES
(7521,'WARD','SALESMAN',7698,to_date('22-2-2001','dd-mm-yyyy'),1250,500,30);
INSERT INTO EMP VALUES
(7566,'JONES','MANAGER',7839,to_date('2-4-2001','dd-mm-yyyy'),2975,NULL,20);
INSERT INTO EMP VALUES
(7654,'MARTIN','SALESMAN',7698,to_date('28-9-2001','dd-mm-yyyy'),1250,1400,30);
INSERT INTO EMP VALUES
(7698,'BLAKE','MANAGER',7839,to_date('1-5-2001','dd-mm-yyyy'),2850,NULL,30);
INSERT INTO EMP VALUES
(7782,'CLARK','MANAGER',7839,to_date('9-6-2001','dd-mm-yyyy'),2450,NULL,10);
INSERT INTO EMP VALUES
(7788,'SCOTT','ANALYST',7566,to_date('13-2-2005','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7839,'KING','PRESIDENT',NULL,to_date('17-11-2001','dd-mm-yyyy'),5000,NULL,10);
INSERT INTO EMP VALUES
(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);
INSERT INTO EMP VALUES
(7876,'ADAMS','CLERK',7788,to_date('13-2-2007','dd-mm-yyyy'),1100,NULL,20);
INSERT INTO EMP VALUES
(7900,'JAMES','CLERK',7698,to_date('3-12-2001','dd-mm-yyyy'),950,NULL,30);
INSERT INTO EMP VALUES
(7902,'FORD','ANALYST',7566,to_date('3-12-2001','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7934,'MILLER','CLERK',7782,to_date('23-1-2002','dd-mm-yyyy'),1300,NULL,10);
INSERT INTO EMP VALUES
(9999,'ACE','CLERK',7782,to_date('23-1-2002','dd-mm-yyyy'),1300,NULL,NULL);

select * from emp;

commit;



์ƒ˜ํ”Œ๋ฐ์ดํ„ฐ๋ฅผ ์ž˜๋ชป ์ž…๋ ฅํ–ˆ์„๋•Œ ๋‹ค์‹œ ์ง€์šฐ๋ ค๋ฉด ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฌธ์„ ์ž…๋ ฅ

delete from dept;
commit;
delete from emp;
commit;

์˜ค๋ผํด์€ mariadb์™€ ๋‹ค๋ฅด๊ฒŒ ์˜คํ† ์ปค๋ฐ‹์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปค๋ฐ‹์„ ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค!




๐Ÿ’ก ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ํšŒ์›์ „์šฉ ๊ฒŒ์‹œํŒ ํ”„๋กœ์ ํŠธ

์˜ค๋Š˜ ๋ฐฐ์šด ์บก์Šํ™”๋ฅผ ๊ธฐ์กด ํŒŒ์ผ์— ์ „๋ถ€ ์ ์šฉํ•˜์—ฌ ์ˆ˜์ •ํ•˜๋Š” ์ž‘์—…์„ ํ•œ ๋’ค, ํšŒ์›์ •๋ณด ์กฐํšŒ/์ˆ˜์ •/ํƒˆํ‡ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

๐Ÿ“Œ ์ž‘์—… ๊ธฐ๋ก


โœ” ํ•„๋“œ ์ •๋ณด์€๋‹‰ + ์บก์Šํ™”

(๊ธฐ์กด ํŒŒ์ผ ์ˆ˜์ • ์ž‘์—…)
Board.java
Comment.java
Member.java
home.jsp
boardOne.jsp
insertCommentAction.jsp
insertMemberAction.jsp
loginAction.jsp


โœ” ํšŒ์›์ •๋ณด ์กฐํšŒ

memberOne.jsp

๐Ÿ“ ์ž‘์„ฑ

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="vo.*" %>
<%
	// 1. ์„ธ์…˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
	if(session.getAttribute("loginMemberId") == null) {
		response.sendRedirect(request.getContextPath() + "/home.jsp");
		return;
	}
	String memberId = (String)session.getAttribute("loginMemberId");
	System.out.println(memberId + " <- memberOne session loginMemberId");
	
	// 2. ๋ชจ๋ธ๊ฐ’ ๊ตฌํ•˜๊ธฐ // member๋ชจ๋ธ
	// 2-1. ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ ๋ฐ db ์ ‘์†
	String driver = "org.mariadb.jdbc.Driver";
	String dburl = "jdbc:mariadb://127.0.0.1:3306/userboard";
	String dbuser = "****";
	String dbpw = "****";
	Class.forName(driver);
	Connection conn = DriverManager.getConnection(dburl, dbuser, dbpw);
	
	// 2.2 ์ฟผ๋ฆฌ ์ž‘์„ฑ
	String membersql = "SELECT member_id memberId, createdate createdate, updatedate updatedate, member_birth memberBirth, member_gender memberGender FROM member WHERE member_id = ?";
	PreparedStatement memberStmt = null;
	ResultSet memberRs = null;
	memberStmt = conn.prepareStatement(membersql);
	memberStmt.setString(1, memberId);
	System.out.println(memberStmt + " <- memberOne memberStmt");
	
	// Voํƒ€์ž…์œผ๋กœ ๋ฐ”๊พธ๊ธฐ
	memberRs = memberStmt.executeQuery();
	Member member = null;
	if(memberRs.next()) {
		member = new Member();
		member.setMemberId(memberRs.getString("memberId"));
		member.setCreatedate(memberRs.getString("createdate"));
		member.setUpdatedate(memberRs.getString("updatedate"));
		member.setMemberBirth(memberRs.getString("memberBirth"));
		member.setMemberGender(memberRs.getString("memberGender"));
	}
	
	// ๋””๋ฒ„๊น…
	System.out.println(member.getMemberId() + " <- memberOne memberId");
	System.out.println(member.getMemberBirth() + " <- memberOne memberBirth");
	System.out.println(member.getMemberGender() + " <- memberOne memberGender");
	System.out.println(member.getCreatedate() + " <- memberOne createdate");
	System.out.println(member.getUpdatedate() + " <- memberOne updatedate");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>memberOne.jsp</title>
	<!-- ๋ถ€ํŠธ์ŠคํŠธ๋žฉ5 ์‚ฌ์šฉ -->
	<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
	<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<!-- include ํŽ˜์ด์ง€ : ๋ฉ”์ธ๋ฉ”๋‰ด(๊ฐ€๋กœ) -->	
<div>
	<!-- ์•ก์…˜ํƒœ๊ทธ -->
	<jsp:include page="/inc/mainmenu.jsp"></jsp:include>
</div>
<!-------- include ํŽ˜์ด์ง€ ๋ ------->	

<div class="container mt-5">
	<!--------------------------- member ๋ชจ๋ธ์ถœ๋ ฅ ์‹œ์ž‘ --------------------------->
	<h3 class="mt-4"><%=memberId%>๋‹˜์˜ ํšŒ์›์ •๋ณด์ž…๋‹ˆ๋‹ค</h3>
		<!-- msg ๋ฐœ์ƒ์‹œ ๋ฉ”์„ธ์ง€ ์ถœ๋ ฅ -->
		<div class="text-danger">
			<%
				if(request.getParameter("msg") != null) {
			%>
					<%=request.getParameter("msg")%>
			<%
				}
			%>
		</div>
		<table class="table container">
			<tr>
				<th class="table-success">์•„์ด๋””</th>
				<td><%=member.getMemberId()%></td>
			</tr>
			<tr>
				<th class="table-success">์ƒ๋…„์›”์ผ</th>
				<td><%=member.getMemberBirth()%></td>
			</tr>
			<tr>
				<th class="table-success">์„ฑ๋ณ„</th>
				<td>
					<%
						if(member.getMemberGender().equals("M")) {
					%>
							๋‚จ์ž
					<%
						} else {
					%>
							์—ฌ์ž
					<% 
						}
					%>
				</td>
			</tr>
			<tr>
				<th class="table-success">ํšŒ์›๊ฐ€์ž…์ผ</th>
				<td><%=member.getCreatedate()%></td>
			</tr>
			<tr>
				<th class="table-success">์ตœ๊ทผ์ˆ˜์ •์ผ</th>
				<td><%=member.getUpdatedate()%></td>
			</tr>
		</table>
	<!---------------------------- member ๋ชจ๋ธ์ถœ๋ ฅ ๋ ---------------------------->
	
	<!----------- ์ˆ˜์ • / ํƒˆํ‡ด ----------->
	<div class="text-center">
		<a href="<%=request.getContextPath()%>/member/updateMemberForm.jsp" class="btn btn-success">ํšŒ์›์ •๋ณด ์ˆ˜์ •</a>
		<a href="<%=request.getContextPath()%>/member/updatePwForm.jsp" class="btn btn-success">๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ</a>
		<a href="<%=request.getContextPath()%>/member/deleteMemberForm.jsp" class="btn btn-danger">ํšŒ์› ํƒˆํ‡ด</a>
	</div>
	<!--------------- ๋ --------------->
</div>

<br>

<!-- include ํŽ˜์ด์ง€ : Copyright -->
<div>
	<!-- ์•ก์…˜ํƒœ๊ทธ -->
	<jsp:include page="/inc/copyright.jsp"></jsp:include>
</div>
<!-------- include ํŽ˜์ด์ง€ ๋ ------->
</body>
</html>

๐Ÿ“ ๊ฒฐ๊ณผ


โœ” ํšŒ์›์ •๋ณด ์ˆ˜์ •

updateMemberForm.jsp
๐Ÿ“ ์ž‘์„ฑ

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="vo.*" %>
<%
	//1. ์„ธ์…˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
	if(session.getAttribute("loginMemberId") == null) {
		response.sendRedirect(request.getContextPath() + "/home.jsp");
		return;
	}
	String memberId = (String)session.getAttribute("loginMemberId");
	System.out.println(memberId + " <- memberOne session loginMemberId");
	
	// 2. ๋ชจ๋ธ๊ฐ’ ๊ตฌํ•˜๊ธฐ // member๋ชจ๋ธ
	// 2-1. ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ ๋ฐ db ์ ‘์†
	String driver = "org.mariadb.jdbc.Driver";
	String dburl = "jdbc:mariadb://127.0.0.1:3306/userboard";
	String dbuser = "****";
	String dbpw = "****";
	Class.forName(driver);
	Connection conn = DriverManager.getConnection(dburl, dbuser, dbpw);
	
	// 2.2 ์ฟผ๋ฆฌ ์ž‘์„ฑ
	// SELECT * FROM member WHERE member_id = ?
	String membersql = "SELECT member_id memberId, createdate createdate, updatedate updatedate, member_birth memberBirth, member_gender memberGender FROM member WHERE member_id = ?";
	PreparedStatement memberStmt = null;
	ResultSet memberRs = null;
	memberStmt = conn.prepareStatement(membersql);
	memberStmt.setString(1, memberId);
	System.out.println(memberStmt + " <- memberOne memberStmt");
	
	// Voํƒ€์ž…์œผ๋กœ ๋ฐ”๊พธ๊ธฐ
	memberRs = memberStmt.executeQuery();
	Member member = null;
	if(memberRs.next()) {
		member = new Member();
		member.setMemberId(memberRs.getString("memberId"));
		member.setCreatedate(memberRs.getString("createdate"));
		member.setUpdatedate(memberRs.getString("updatedate"));
		member.setMemberBirth(memberRs.getString("memberBirth"));
		member.setMemberGender(memberRs.getString("memberGender"));
	}
	
	// ๋””๋ฒ„๊น…
	System.out.println(member.getMemberId() + " <- memberOne memberId");
	System.out.println(member.getMemberBirth() + " <- memberOne memberBirth");
	System.out.println(member.getMemberGender() + " <- memberOne memberGender");
	System.out.println(member.getCreatedate() + " <- memberOne createdate");
	System.out.println(member.getUpdatedate() + " <- memberOne updatedate");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>updateMemberForm.jsp</title>
	<!-- ๋ถ€ํŠธ์ŠคํŠธ๋žฉ5 ์‚ฌ์šฉ -->
	<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
	<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<!-- include ํŽ˜์ด์ง€ : ๋ฉ”์ธ๋ฉ”๋‰ด(๊ฐ€๋กœ) -->	
<div>
	<!-- ์•ก์…˜ํƒœ๊ทธ -->
	<jsp:include page="/inc/mainmenu.jsp"></jsp:include>
</div>
<!-------- include ํŽ˜์ด์ง€ ๋ ------->	


<div class="container mt-5">
	<!--------------------------- ํšŒ์›์ •๋ณด ์ˆ˜์ • ํผ --------------------------->
	<h3 class="mt-4">ํšŒ์›์ •๋ณด ์ˆ˜์ •ํ•˜๊ธฐ</h3>
		<!-- ์ˆ˜์ • ์‹คํŒจ์‹œ ์—๋Ÿฌ๋ฉ”์„ธ์ง€ ์ถœ๋ ฅ -->
		<div class="text-danger">
			<%
				if(request.getParameter("msg") != null) {
			%>
					<%=request.getParameter("msg")%>
			<%
				}
			%>
		</div>
		<form action="<%=request.getContextPath()%>/member/updateMemberAction.jsp" method="post">
			<table class="table container">
				<tr>
					<th class="table-success">์•„์ด๋””</th>
					<td>
						<%=member.getMemberId()%>
					</td>
				</tr>
				<tr>
					<th class="table-success"td>๋น„๋ฐ€๋ฒˆํ˜ธ</th>
					<td>
						<input type="password" name="memberPw" placeholder="๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”">
					</td>
				</tr>
				<tr>
					<th class="table-success">์ƒ๋…„์›”์ผ</th>
					<td>
						<input type="date" name="memberBirth" value="<%=member.getMemberBirth()%>">
					</td>
				</tr>
				<tr>
					<th class="table-success">์„ฑ๋ณ„</th>
					<td>
						<input type="radio" name="memberGender" value="M" <%if(member.getMemberGender().equals("M")){%> checked <%}%>>๋‚จ์ž
						<input type="radio" name="memberGender" value="F" <%if(member.getMemberGender().equals("F")){%> checked <%}%>>์—ฌ์ž
					</td>
				</tr>
				<tr>
					<th class="table-success">ํšŒ์›๊ฐ€์ž…์ผ</th>
					<td>
						<%=member.getCreatedate()%>
					</td>
				</tr>
				<tr>
					<th class="table-success">์ตœ๊ทผ์ˆ˜์ •์ผ</th>
					<td>
						<%=member.getUpdatedate()%>
					</td>
				</tr>
			</table>
			<a href="<%=request.getContextPath()%>/member/memberOne.jsp" class="btn btn-success">
				๋’ค๋กœ๊ฐ€๊ธฐ
			</a>
			<button type="submit" class="btn btn-success">์ˆ˜์ •</button>
		</form>
	<!---------------------------- ํšŒ์›์ •๋ณด ์ˆ˜์ • ํผ ๋ ----------------------------->
</div>
	
<br>

<!-- include ํŽ˜์ด์ง€ : Copyright -->
<div>
	<!-- ์•ก์…˜ํƒœ๊ทธ -->
	<jsp:include page="/inc/copyright.jsp"></jsp:include>
</div>
<!-------- include ํŽ˜์ด์ง€ ๋ ------->
</body>
</html>

updateMemberAction.jsp
๐Ÿ“ ์ž‘์„ฑ

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="vo.*" %>
<%
	//1. ์„ธ์…˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
	if(session.getAttribute("loginMemberId") == null) {
		response.sendRedirect(request.getContextPath() + "/home.jsp");
		return;
	}
	String memberId = (String)session.getAttribute("loginMemberId");
	System.out.println(memberId + " <- memberOne session loginMemberId");
	
	// 2. ๋ชจ๋ธ๊ฐ’ ๊ตฌํ•˜๊ธฐ // member๋ชจ๋ธ
	// 2-1. ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ ๋ฐ db ์ ‘์†
	String driver = "org.mariadb.jdbc.Driver";
	String dburl = "jdbc:mariadb://127.0.0.1:3306/userboard";
	String dbuser = "****";
	String dbpw = "****";
	Class.forName(driver);
	Connection conn = DriverManager.getConnection(dburl, dbuser, dbpw);
	
	// 2.2 ์ฟผ๋ฆฌ ์ž‘์„ฑ
	// SELECT * FROM member WHERE member_id = ?
	String membersql = "SELECT member_id memberId, createdate createdate, updatedate updatedate, member_birth memberBirth, member_gender memberGender FROM member WHERE member_id = ?";
	PreparedStatement memberStmt = null;
	ResultSet memberRs = null;
	memberStmt = conn.prepareStatement(membersql);
	memberStmt.setString(1, memberId);
	System.out.println(memberStmt + " <- memberOne memberStmt");
	
	// Voํƒ€์ž…์œผ๋กœ ๋ฐ”๊พธ๊ธฐ
	memberRs = memberStmt.executeQuery();
	Member member = null;
	if(memberRs.next()) {
		member = new Member();
		member.setMemberId(memberRs.getString("memberId"));
		member.setCreatedate(memberRs.getString("createdate"));
		member.setUpdatedate(memberRs.getString("updatedate"));
		member.setMemberBirth(memberRs.getString("memberBirth"));
		member.setMemberGender(memberRs.getString("memberGender"));
	}
	
	// ๋””๋ฒ„๊น…
	System.out.println(member.getMemberId() + " <- memberOne memberId");
	System.out.println(member.getMemberBirth() + " <- memberOne memberBirth");
	System.out.println(member.getMemberGender() + " <- memberOne memberGender");
	System.out.println(member.getCreatedate() + " <- memberOne createdate");
	System.out.println(member.getUpdatedate() + " <- memberOne updatedate");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>updateMemberForm.jsp</title>
	<!-- ๋ถ€ํŠธ์ŠคํŠธ๋žฉ5 ์‚ฌ์šฉ -->
	<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
	<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<!-- include ํŽ˜์ด์ง€ : ๋ฉ”์ธ๋ฉ”๋‰ด(๊ฐ€๋กœ) -->	
<div>
	<!-- ์•ก์…˜ํƒœ๊ทธ -->
	<jsp:include page="/inc/mainmenu.jsp"></jsp:include>
</div>
<!-------- include ํŽ˜์ด์ง€ ๋ ------->	


<div class="container mt-5">
	<!--------------------------- ํšŒ์›์ •๋ณด ์ˆ˜์ • ํผ --------------------------->
	<h3 class="mt-4">ํšŒ์›์ •๋ณด ์ˆ˜์ •ํ•˜๊ธฐ</h3>
		<!-- ์ˆ˜์ • ์‹คํŒจ์‹œ ์—๋Ÿฌ๋ฉ”์„ธ์ง€ ์ถœ๋ ฅ -->
		<div class="text-danger">
			<%
				if(request.getParameter("msg") != null) {
			%>
					<%=request.getParameter("msg")%>
			<%
				}
			%>
		</div>
		<form action="<%=request.getContextPath()%>/member/updateMemberAction.jsp" method="post">
			<table class="table container">
				<tr>
					<th class="table-success">์•„์ด๋””</th>
					<td>
						<%=member.getMemberId()%>
					</td>
				</tr>
				<tr>
					<th class="table-success"td>๋น„๋ฐ€๋ฒˆํ˜ธ</th>
					<td>
						<input type="password" name="memberPw" placeholder="๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”">
					</td>
				</tr>
				<tr>
					<th class="table-success">์ƒ๋…„์›”์ผ</th>
					<td>
						<input type="date" name="memberBirth" value="<%=member.getMemberBirth()%>">
					</td>
				</tr>
				<tr>
					<th class="table-success">์„ฑ๋ณ„</th>
					<td>
						<input type="radio" name="memberGender" value="M" <%if(member.getMemberGender().equals("M")){%> checked <%}%>>๋‚จ์ž
						<input type="radio" name="memberGender" value="F" <%if(member.getMemberGender().equals("F")){%> checked <%}%>>์—ฌ์ž
					</td>
				</tr>
				<tr>
					<th class="table-success">ํšŒ์›๊ฐ€์ž…์ผ</th>
					<td>
						<%=member.getCreatedate()%>
					</td>
				</tr>
				<tr>
					<th class="table-success">์ตœ๊ทผ์ˆ˜์ •์ผ</th>
					<td>
						<%=member.getUpdatedate()%>
					</td>
				</tr>
			</table>
			<a href="<%=request.getContextPath()%>/member/memberOne.jsp" class="btn btn-success">
				๋’ค๋กœ๊ฐ€๊ธฐ
			</a>
			<button type="submit" class="btn btn-success">์ˆ˜์ •</button>
		</form>
	<!---------------------------- ํšŒ์›์ •๋ณด ์ˆ˜์ • ํผ ๋ ----------------------------->
</div>
	
<br>

<!-- include ํŽ˜์ด์ง€ : Copyright -->
<div>
	<!-- ์•ก์…˜ํƒœ๊ทธ -->
	<jsp:include page="/inc/copyright.jsp"></jsp:include>
</div>
<!-------- include ํŽ˜์ด์ง€ ๋ ------->
</body>
</html>

๐Ÿ“ ๊ฒฐ๊ณผ


๐Ÿง ํšŒ์›์ •๋ณด ์ˆ˜์ •, ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ์‹œ updatedate๋„ NOW()๊ฐ’์œผ๋กœ UPDATE ํ•ด์ฃผ๋Š” ๊ฒƒ ์žŠ์ง€ ๋ง๊ธฐ!


โœ” ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ

updatePwForm.jsp

๐Ÿ“ ์ž‘์„ฑ

<<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
	// ์„ธ์…˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
	if(session.getAttribute("loginMemberId") == null) {
		response.sendRedirect(request.getContextPath() + "/home.jsp");
		return;
	}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>updatePwForm.jsp</title>
	<!-- ๋ถ€ํŠธ์ŠคํŠธ๋žฉ5 ์‚ฌ์šฉ -->
	<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
	<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<!-- include ํŽ˜์ด์ง€ : ๋ฉ”์ธ๋ฉ”๋‰ด(๊ฐ€๋กœ) -->	
<div>
	<!-- ์•ก์…˜ํƒœ๊ทธ -->
	<jsp:include page="/inc/mainmenu.jsp"></jsp:include>
</div>
<!-------- include ํŽ˜์ด์ง€ ๋ ------->	


<div class="container mt-5">
	<h3 class="mt-4">๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ</h3>
		<!-- ๋ณ€๊ฒฝ ์‹คํŒจ์‹œ ์—๋Ÿฌ๋ฉ”์„ธ์ง€ ์ถœ๋ ฅ -->
		<div class="text-danger">
			<%
				if(request.getParameter("msg") != null) {
			%>
					<%=request.getParameter("msg")%>
			<%
				}
			%>
		</div>
		<form action="<%=request.getContextPath()%>/member/updatePwAction.jsp" method="post">
			<table class="table container">
				<tr>
					<th class="table-success">๊ธฐ์กด ๋น„๋ฐ€๋ฒˆํ˜ธ</th>
					<td>
						<input type="password" name="memberPw" placeholder="๊ธฐ์กด ๋น„๋ฐ€๋ฒˆํ˜ธ">
					</td>
				</tr>
				<tr>
					<th class="table-success">์‹ ๊ทœ ๋น„๋ฐ€๋ฒˆํ˜ธ</th>
					<td>
						<input type="password" name="memberNewPw" placeholder="์‹ ๊ทœ ๋น„๋ฐ€๋ฒˆํ˜ธ">
					</td>
				</tr>
				<tr>
					<th class="table-success">์‹ ๊ทœ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ</th>
					<td>
						<input type="password" name="memberNewPw2" placeholder="์‹ ๊ทœ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ">
					</td>
				</tr>
			</table>
			<a href="<%=request.getContextPath()%>/member/memberOne.jsp" class="btn btn-success">
				๋’ค๋กœ๊ฐ€๊ธฐ
			</a>
			<button type="submit" class="btn btn-success">๋ณ€๊ฒฝ</button>
		</form>
</div>

<br>

<!-- include ํŽ˜์ด์ง€ : Copyright -->
<div>
	<!-- ์•ก์…˜ํƒœ๊ทธ -->
	<jsp:include page="/inc/copyright.jsp"></jsp:include>
</div>
<!-------- include ํŽ˜์ด์ง€ ๋ ------->
</body>
</html>

updatePwAction.jsp

๐Ÿ“ ์ž‘์„ฑ

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.net.*" %>
<%@ page import="vo.*" %>
<%
	// 1. ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
	// 1-1. ์„ธ์…˜
	if(session.getAttribute("loginMemberId") == null) {
		response.sendRedirect(request.getContextPath() + "/home.jsp");
		return;
	}
	String memberId = (String)session.getAttribute("loginMemberId");
	System.out.println(memberId + " <- updatePwAction session loginMemberId");
	// 1-2. ์š”์ฒญ๊ฐ’
	String msg = null;
	if(request.getParameter("memberPw") == null
			|| request.getParameter("memberPw").equals("")) {
		msg = URLEncoder.encode("๊ธฐ์กด ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ž…๋ ฅ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค", "utf-8");
	} else if(request.getParameter("memberNewPw") == null
			|| request.getParameter("memberNewPw").equals("")) {
		msg = URLEncoder.encode("์‹ ๊ทœ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ž…๋ ฅ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค", "utf-8");
	} else if(request.getParameter("memberNewPw2") == null
			|| request.getParameter("memberNewPw2").equals("")) {
		msg = URLEncoder.encode("์‹ ๊ทœ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ์ด ์ž…๋ ฅ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค", "utf-8");
	}
	if(msg != null) {
		response.sendRedirect(request.getContextPath() + "/member/updatePwForm.jsp?msg=" + msg);
		return;
	}
	String memberPw = request.getParameter("memberPw");
	String memberNewPw = request.getParameter("memberNewPw");
	String memberNewPw2 = request.getParameter("memberNewPw2");
	// 1-3. ์‹ ๊ทœ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ
	if(!memberNewPw.equals(memberNewPw2)) {
		msg = URLEncoder.encode("์‹ ๊ทœ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ์ด ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค", "utf-8");
		response.sendRedirect(request.getContextPath() + "/member/updatePwForm.jsp?msg=" + msg);
		return;
	}
	// 1-4. ๋””๋ฒ„๊น…
	System.out.println(memberPw + " <- updatePwAction ๊ธฐ์กด ๋น„๋ฐ€๋ฒˆํ˜ธ");
	System.out.println(memberNewPw + " <- updatePwAction ์‹ ๊ทœ ๋น„๋ฐ€๋ฒˆํ˜ธ");
	System.out.println(memberNewPw + " <- updatePwAction ์‹ ๊ทœ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ");
	
	// 2. update
	// 2-1. ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ ๋ฐ db ์ ‘์†
	String driver = "org.mariadb.jdbc.Driver";
	String dburl = "jdbc:mariadb://127.0.0.1:3306/userboard";
	String dbuser = "****";
	String dbpw = "****";
	Class.forName(driver);
	Connection conn = DriverManager.getConnection(dburl, dbuser, dbpw);
	
	// 2-2. ์ฟผ๋ฆฌ ์ž‘์„ฑ
	// ํŒจ์Šค์›Œ๋“œ ์•”ํ˜ธํ™” ํ•ด์ฃผ๊ธฐ!
	String sql = "UPDATE member SET member_pw = PASSWORD(?), updatedate = NOW() WHERE member_id = ? AND member_pw = PASSWORD(?)";
	PreparedStatement stmt = conn.prepareStatement(sql);
	stmt.setString(1, memberNewPw);
	stmt.setString(2, memberId);
	stmt.setString(3, memberPw);
	System.out.println(stmt + " <- updatePwAction stmt");
	
	// 2-3. ์ฟผ๋ฆฌ๊ฐ€ ์ž˜ ์ง„ํ–‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
	int row = stmt.executeUpdate();
	if(row == 1) { // ์„ฑ๊ณต์‹œ memberOne์œผ๋กœ
		System.out.println(row + " <- updatePwAction ์„ฑ๊ณต");
		msg = URLEncoder.encode("๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค", "utf-8");
		response.sendRedirect(request.getContextPath() + "/member/memberOne.jsp?msg=" + msg);
		return;
	} else if(row == 0) { // ์‹คํŒจ์‹œ Form์œผ๋กœ
		System.out.println(row + " <- updatePwAction ์‹คํŒจ");
		msg = URLEncoder.encode("๊ธฐ์กด ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค", "utf-8");
		response.sendRedirect(request.getContextPath() + "/member/updatePwForm.jsp?msg=" + msg);
		return;
	} else { // ๊ทธ ์™ธ ์˜ค๋ฅ˜์‹œ
		System.out.println(row + " <- updatePwAction ์˜ค๋ฅ˜");
		msg = URLEncoder.encode("๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค ๋‹ค์‹œ ์‹œ๋„ํ•ด์ฃผ์„ธ์š”", "utf-8");
		response.sendRedirect(request.getContextPath() + "/member/updatePwForm.jsp?msg=" + msg);
		return;
	}
%>

๐Ÿ“ ๊ฒฐ๊ณผ


๐Ÿง ํšŒ์›์ •๋ณด ์ˆ˜์ •, ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ, ํƒˆํ‡ด ๋“ฑ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ฟผ๋ฆฌ์— ์ž…๋ ฅํ•  ๋•Œ์—๋Š” PASSWORD()๋กœ ์•”ํ˜ธํ™”ํ•ด์ฃผ๋Š” ๊ฒƒ ์žŠ์ง€ ๋ง๊ธฐ!



โœ” ํšŒ์› ํƒˆํ‡ด

deleteMemberForm.jsp
๐Ÿ“ ์ž‘์„ฑ

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
	// ์„ธ์…˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
	if(session.getAttribute("loginMemberId") == null) {
		response.sendRedirect(request.getContextPath() + "/home.jsp");
		return;
	}
	String memberId = (String)session.getAttribute("loginMemberId");
	System.out.println(memberId + " <- memberOne session loginMemberId");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>deleteMemberForm.jsp</title>
	<!-- ๋ถ€ํŠธ์ŠคํŠธ๋žฉ5 ์‚ฌ์šฉ -->
	<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
	<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<!-- include ํŽ˜์ด์ง€ : ๋ฉ”์ธ๋ฉ”๋‰ด(๊ฐ€๋กœ) -->	
<div>
	<!-- ์•ก์…˜ํƒœ๊ทธ -->
	<jsp:include page="/inc/mainmenu.jsp"></jsp:include>
</div>
<!-------- include ํŽ˜์ด์ง€ ๋ ------->	


<div class="container mt-5">
	<h3 class="mt-4">ํšŒ์› ํƒˆํ‡ด</h3>
	<h6><%=memberId%>๋‹˜, ํšŒ์› ํƒˆํ‡ด ์‹œ ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๊ธ€๊ณผ ๋Œ“๊ธ€์ด ๋ชจ๋‘ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค</h6>
		<!-- ํƒˆํ‡ด ์‹คํŒจ์‹œ ์—๋Ÿฌ๋ฉ”์„ธ์ง€ ์ถœ๋ ฅ -->
		<div class="text-danger">
			<%
				if(request.getParameter("msg") != null) {
			%>
					<%=request.getParameter("msg")%>
			<%
				}
			%>
		</div>
		<form action="<%=request.getContextPath()%>/member/deleteMemberAction.jsp" method="post">
			<table class="table container">
				<tr>
					<th class="table-success">๋น„๋ฐ€๋ฒˆํ˜ธ</th>
					<td>
						<input type="password" name="memberPw" placeholder="์ •๋ง ํƒˆํ‡ดํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?">
					</td>
				</tr>
			</table>
			<a href="<%=request.getContextPath()%>/member/memberOne.jsp" class="btn btn-success">
				๋’ค๋กœ๊ฐ€๊ธฐ
			</a>
			<button type="submit" class="btn btn-danger">ํšŒ์› ํƒˆํ‡ด</button>
		</form>
</div>

<br>

<!-- include ํŽ˜์ด์ง€ : Copyright -->
<div>
	<!-- ์•ก์…˜ํƒœ๊ทธ -->
	<jsp:include page="/inc/copyright.jsp"></jsp:include>
</div>
<!-------- include ํŽ˜์ด์ง€ ๋ ------->
</body>
</html>

deleteMemberAction.jsp
๐Ÿ“ ์ž‘์„ฑ

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.net.*" %>
<%@ page import="java.sql.*" %>
<%
	// ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
	// 1-1. ์„ธ์…˜
	if(session.getAttribute("loginMemberId") == null) {
		response.sendRedirect(request.getContextPath() + "/home.jsp");
		return;
	}
	String memberId = (String)session.getAttribute("loginMemberId");
	System.out.println(memberId + " <- deleteMemberAction session loginMemberId");
	
	// 1-2. ์š”์ฒญ๊ฐ’
	String msg = null;
	if(request.getParameter("memberPw") == null
			|| request.getParameter("memberPw").equals("")) {
		msg = URLEncoder.encode("ํƒˆํ‡ดํ•˜์‹œ๋ ค๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”", "utf-8");
		response.sendRedirect(request.getContextPath() + "/member/deleteMemberForm.jsp?msg=" + msg);
		return;
	}
	String memberPw = request.getParameter("memberPw");
	System.out.println(memberPw + " <- deleteMemberAction memberPw");
	
	// 2. delete
	// 2-1. ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ ๋ฐ db ์ ‘์†
	String driver = "org.mariadb.jdbc.Driver";
	String dburl = "jdbc:mariadb://127.0.0.1:3306/userboard";
	String dbuser = "****";
	String dbpw = "****";
	Class.forName(driver);
	Connection conn = DriverManager.getConnection(dburl, dbuser, dbpw);
	
	// 2-2. ์ฟผ๋ฆฌ ์ž‘์„ฑ
	// ํŒจ์Šค์›Œ๋“œ ์•”ํ˜ธํ™” ํ•ด์ฃผ๊ธฐ!
	String sql = "DELETE FROM member WHERE member_id = ? AND member_pw = PASSWORD(?)";
	PreparedStatement stmt = conn.prepareStatement(sql);
	stmt.setString(1, memberId);
	stmt.setString(2, memberPw);
	System.out.println(stmt + " <- deleteMemberAction stmt");
	
	// 2-3. ์ฟผ๋ฆฌ๊ฐ€ ์ž˜ ์ง„ํ–‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
	int row = stmt.executeUpdate();
	if(row == 1) { // ์„ฑ๊ณต์‹œ ์„ธ์…˜์ดˆ๊ธฐํ™” ํ›„ home์œผ๋กœ
		System.out.println(row + " <- deleteMemberAction ์„ฑ๊ณต");
		msg = URLEncoder.encode("ํšŒ์› ํƒˆํ‡ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค", "utf-8");
		session.invalidate();  // ์„ธ์…˜์ดˆ๊ธฐํ™”
		response.sendRedirect(request.getContextPath() + "/home.jsp?msg=" + msg);
		return;
	} else if(row == 0) { // ์‹คํŒจ์‹œ Form์œผ๋กœ
		System.out.println(row + " <- deleteMemberAction ์‹คํŒจ");
		msg = URLEncoder.encode("๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค", "utf-8");
		response.sendRedirect(request.getContextPath() + "/member/deleteMemberForm.jsp?msg=" + msg);
		return;
	} else { // ๊ทธ ์™ธ ์˜ค๋ฅ˜์‹œ
		System.out.println(row + " <- deleteMemberAction ์˜ค๋ฅ˜");
		msg = URLEncoder.encode("ํšŒ์› ํƒˆํ‡ด๊ฐ€ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค ๋‹ค์‹œ ์‹œ๋„ํ•ด์ฃผ์„ธ์š”", "utf-8");
		response.sendRedirect(request.getContextPath() + "/member/deleteMemberForm.jsp?msg=" + msg);
		return;
	}
%>

๐Ÿ“ ๊ฒฐ๊ณผ

๐Ÿง ํƒˆํ‡ด ์‹œ ์„ธ์…˜๋„ ์ดˆ๊ธฐํ™” ํ•ด์ฃผ๋Š” ๊ฒƒ ์žŠ์ง€ ๋ง๊ธฐ!



profile
ํ•˜๋ฃจ ํ•œ๊ฑธ์Œ์”ฉ๐Ÿ’ช ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž ๋„์ „๊ธฐ ๐ŸŒฑ๐Ÿ’ป

0๊ฐœ์˜ ๋Œ“๊ธ€