[오후]
막 통으로 가져올때는 ArrayList, 수정할게 많은 것, 수정이 용이 : LinkedList
------------------------------------------------------------------------------------------------------------------------
set - hashset
import java.util.HashSet;
import java.util.Set;
public class ApiTest12 {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("원빈");
set.add("장동건");
set.add("브래드피트");
set.add("조지클루니");
set.add("강동원");
//순차적으로 들어갔나 나오는거 아님. 지 맘임(hashset), 중복데이터를 받아 들이지 않음(중복만 제거)
for(String str:set) {
System.out.println(str);
}
}
}
Map - hashmap
안에데이터가 구분할 수 있는 키값이 있을때 key, value가 한상이며, key는 중복되지 않음
똑같은 key값이 중복되는게 들어오면 원래의 key갑세 들어있는 value값 삭제됨
import java.util.HashMap;
import java.util.Map;
public class ApiTest13 {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
map.put("브래드피트", "010-1111-1111");
map.put("조지클루니", "010-1111-2222");
map.put("원빈", "010-3333-3333");
map.put("장동건", "010-1234-4531");
map.put("강동원", "010-7894-9874");
map.put("강동원", "010-9999-9999");
System.out.println(map.get("강동원")); // 키를 적으면 value값을 저장할 수있다. 키는 될수있으면 하나로!
System.out.println();
// 지맘대로 하나씩 키값을 꺼내서 던져줌
for (String key : map.keySet()) {
System.out.println(map.get(key));
}
}
}
------------------------------------------------------------------------------------------------------------------------
jdbc(java data base connectivity)
--연결 순서
드라이버 존재하는지 확인 -> class.forName()
Statement -sql문넣기
PreparedStatement -sql문 넣기
--
일단 동작확인 후 refactory할거
------------------------------------------------------------------------------------------------------------------------
jar파일로 만들어서 사용하기
package test;
import oop.Point3D;
//외부라이브러리를 불러다가 쓸수 있다.
public class PointTest {
public static void main(String[] args) {
Point3D pt = new Point3D();
pt.setX(1000);
pt.setY(2000);
pt.setZ(3000);
System.out.println(pt.getX());
}
}
https://sourceforge.net/
http://apache.org/
api, md5,sha512
package api;
import org.apache.commons.codec.digest.DigestUtils;
public class ApiTest14 {
public static void main(String[] args) {
String pw = "12345678";
//비밀번호를 암호화 시킴-> DB에 저장할때 한단계 암호화 시켜 저장
System.out.println(DigestUtils.sha512Hex(pw));
}
}
------------------------------------------------------------------------------------------------------------------------
3개를 많이쓴다. <jdbc 삼총사>
Connection conn = null;
Statement stmt = null;
//ResultSet rs = null; //조회(select)
stmt.excute : DDL문 - 많이 안씀
stmt.excuteQuery : select 같은거 던지고 result받을때 쓰는 것(결과를 돌려 받는거)
stmt.excuteUpdate : select를 제외한 DML쓸 때
2개 외워두셈
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import org.apache.commons.codec.digest.DigestUtils;
public class InsertTest {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
//드라이버가 있는지 확인
Class.forName("oracle.jdbc.OracleDriver");
// url이 일치하면 Connection을 만들어줌
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "n1", "n1");
stmt = conn.createStatement(); // 쿼리를 수행할 수 있는 객체 생성
stmt.executeUpdate("insert into member(no, user_id, user_pw, user_name)"
+ " values(seq_member.nextval, 'next','" + DigestUtils.sha512Hex("test") + "','신해철')");
System.out.println("입력되었습니다.");
} catch (Exception e) {
e.printStackTrace();
}finally {
if(stmt != null)try {stmt.close();} catch(Exception e) {}
if(conn != null) try {conn.close();} catch(Exception e) {}
}
}
}
--------------------------------------------------------------------------------------------
간단한 로그인 테스트
id[ ]
pwd[ ]
nextLine();
select~
'-- 이용
dynamic query vs parameter query
쿼리전체를 먼저 던져놓음, 들어온 값을 다시 던짐..?
dynamic query는 지양하고 무조건 parameter query로 해줘야함..
1. dynamic query는 쿼리 짜는게 복잡함.. / parameter query는 간결
2. parameter query를 쓰면 보안성이 강화된다.
3. parameter query를 쓰면 성능이 좋아진다. -> 쿼리문이 반복되는걸 알아서 찾아서 해주기때문에
---------------------------------------------------------------------------------------------------
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;
import org.apache.commons.codec.digest.DigestUtils;
public class LoginTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String user_id = "";
String user_pw = "";
System.out.print("아이디 : ");
user_id = sc.nextLine(); //'--이런식으로 아이디에 적으면 아이디만 맞으면 들어가게 되니까!!
System.out.print("비밀번호 : ");
user_pw = DigestUtils.sha512Hex(sc.nextLine());
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String sql =
"select no, user_name from member " +
"where user_id='"+user_id+"' and user_pw='"+user_pw+"'";
try {
Class.forName("oracle.jdbc.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","n1","n1");
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
if(rs.next()) { //다음 레코드가 존재하면 true
String name = rs.getString("user_name");
int no = rs.getInt("no");
System.out.println(name+"(" +user_id+")회원 님이 로그인 하였습니다.");
}else {
System.out.println("아이디 혹은 비밀번호가 틀립니다.");
}
} catch (Exception e) {
e.printStackTrace();
}finally {
if(rs != null) try {rs.close();} catch(Exception e) {}
if(stmt != null) try {stmt.close();} catch(Exception e) {}
if(conn != null) try {conn.close();} catch(Exception e) {}
}
}
}
'학부 정리 > Java' 카테고리의 다른 글
[오늘필기02] jdbc - 18.01.15 (0) | 2018.01.15 |
---|---|
[오늘필기01] jdbc - 18.01.15 (0) | 2018.01.15 |
18.01.12 자바 - 필기01 미완성 (0) | 2018.01.12 |
18.01.11 자바 - 필기02 미완성 (0) | 2018.01.11 |
18.01.11 자바 - 필기01 미완성 (0) | 2018.01.11 |