전체 글

40DAY / Git

2017. 5. 31. 09:11

Git

Git 속도가 낮고 효율성이 높은 소규모 프로젝트부터 대규모 프로젝트까지 모든 것을 처리하도록 설계된 무료 오픈 소스 분산 버전 제어 시스템이다.


Git SVN 다르게 commit 로컬 저장소에서 이루어 지고 push라는 동작으로 원격 저장소에 반영되고 받을때도 pull 또는 fetch 서버에서 변경된 내역을 받아 있다.





[window] - [Perspective] - [Open perspective] -[ Git ] 을 선택하여 연다



Java 파일에서 마우스 우클릭 - [ Team ] - [ Commit ] 창을 연다





Commit할 파일을 드래그하여 아래로 당긴후

Commit 메세지를 작성한 뒤 Commit 버튼을 누른다.

Commit 메세지는 일의 능률을 높이기 때문에 신중하게 작성해야한다.


간단한 예제로 Properties 사용




db.properties 파일을 생성한다.


-->무슨 이유인지는 몰라도 위에 공백을 넣어야 내용이 읽히는 오류가 발생하였다...


import java.io.FileInputStream;

import java.io.IOException;

import java.sql.*;

import java.util.Properties;

 

public class MemberDao {

     

      private String url;

      private String dbid;

      private String dbpw;

     

      private void dbPropertiesInit() throws IOException{

            FileInputStream fin = new FileInputStream("d:\\db.properties");

            Properties pro = new Properties();

            pro.load(fin);

            this.url=pro.getProperty("url");

            this.dbid=pro.getProperty("dbid");

            this.dbpw=pro.getProperty("dbpw");

           

      }

     

      public Member selectMemberById(String id) throws ClassNotFoundException, SQLException, IOException{

            //properties 에서 db정보 가져옴(내부적으로 input)

            this.dbPropertiesInit();

            System.out.println(this.dbid+"<=id");

            System.out.println(this.dbpw+"<=pw");

           

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

            Connection conn = DriverManager.getConnection(this.url,this.dbid,this.dbpw);

            String query ="select * from oracle_member where ora_id = ?";

            PreparedStatement stmt = conn.prepareStatement(query);

            stmt.setString(1, id);

            ResultSet rs = stmt.executeQuery();

            Member mem=null;

            if(rs.next()){

                  mem = new Member();

                  mem.setId(rs.getString("ora_id"));

                  mem.setPw(rs.getString("ora_pw"));

                  mem.setLevel(rs.getString("ora_level"));

                  mem.setName(rs.getString("ora_name"));

                  mem.setEmail(rs.getString("ora_email"));

            }

            return mem;

      }

      public static void main(String[] args) throws ClassNotFoundException, SQLException, IOException{

            MemberDao mdao = new MemberDao();

            Member m = mdao.selectMemberById("id001");

            System.out.println(m.getId());

           

      }

}

 


GitHub 

GiHub 에 가입하고 이메일 인증받은 후 사용가능하다


새로운 저장소 생성

1) 이름 정하기

2)주소 복사





3)이클립스로 돌아가서 PUSH 한다.



4) 



5) [master(기본)]를 선택하고 [Add Spec]클릭시 추가된다.



6)GitHub에 가서 확인한다!


==>참조무결성에 따라 참조키는 항상 부모키에 해당하는 값만 넣을 수 있다.


참조받는 테이블의 데이터를 먼저 삽입해서 발생한 오류. 데이터를 삭제한 뒤 참조키 설정하였다.

SQL 오류 (1005): Can't create table 'mydrug.#sql-950_9' (errno: 150)

Foreign key constraint is incorrectly formed 

외래키를 설정할 때 참조데이터가 다를 경우 발생하는 오류


1. 데이터 타입이 같은지 확인 (unsigned/signed)INT,VARCHAR 등 


2. NULL값 허용여부 확인


3. 참조받는 데이터가 unique, primary key 가 아닌지 확인


4. 테이블의 조합확인 

 ->하나는 euckr_korean_ci 하나는 utf_general_ci 여서 오류가 발생했다.



35DAY / mysql / TRANSACTION

2017. 5. 24. 14:45

TRANSACTION 트랜잭션

몇 단계로 처리를 나누어하는 SQL 명령을 실행하는 경우에 트랜잭션을 사용한다.
트랜잭션을 이용하여 연산을 수행할 때 에러가 발생하면 Rollback 이 되어 종료된다.
롤백하면 트랜잭션 내에서 행해진 변경사항들이 모두 취소된다.
아무런 에러가 발생하지 않을경우만 Commit이 되어 변경사항이 적용된다.




OldidDao.java : Oldid DB에 id값을 저장하는 클래스

CustomerService.java : 회원을  삭제와 동시에 데이터베이스에 추가하는 클래스

둘 중 하나가 실패시 ROLLBACK을 하고 

성공했을 때 COMMIT을 한다.


package Service;

 

import java.sql.Connection;

import java.sql.SQLException;

public class CustomerService {

 

      private DBService dbservice;

      private CustomerDao customerDao;

      private OldidDao oldidDao;

     

      //java실행시 바로실행

      public CustomerService(){

            dbservice = new DBService();

           

      }

      public void removeCustomer(int id){

            customerDao = new CustomerDao();

            oldidDao = new OldidDao();

            Connection conn = null;

            try{

                  conn=dbservice.getConnection();

                  customerDao.deleteCustomer(dbservice,conn, id);

                  oldidDao.insertId(dbservice, conn, id);

                  conn.commit();

            }

             catch (SQLException e){

                        e.printStackTrace();

                        try{

                             conn.rollback();

                        }catch (SQLException e1) {

                             e1.printStackTrace();

                        }

                  }

            finally{

                  try {

                        conn.close();

                  } catch (SQLException e) {

                        e.printStackTrace();

                  }

 

            }

      }

}

 

package Service;

import java.sql.*;

 

public class OldidDao {

 

      public int insertId(DBService dbservice, Connection conn,int id) throws SQLException{

 

            int returnRow = 0;

            PreparedStatement stmt = null;

            stmt = conn.prepareStatement("INSERT INTO oldid(id)  VALUES (?)");

            stmt.setInt(1, id);

            returnRow=stmt.executeUpdate();

           

            return returnRow;

      }

}

 

public String mLoginCheck(String in_id,String in_pw) : 로그인체크 



public Member mGetForSession(String in_id) : 로그인 성공 한 회원 체크 


login_pro.jsp 


<%

       String id = request.getParameter("id");

       String pw = request.getParameter("pw");

      

       Mdao mdao = new Mdao();

       String loginresult = mdao.mLoginCheck(id, pw);

      

       switch(loginresult){

       case "로그인성공" :

             Member m = mdao.mGetForSession(id);

             session.setAttribute("S_NAME", m.getM_name());

             session.setAttribute("S_LEVEL", m.getM_level());

             session.setAttribute("SID", m.getM_id());

             %><script language="javascript">

                    alert("로그인성공");

                    location.href = "<%= request.getContextPath() %>/index.jsp";

             </script>

             <%

             break;

       case "비밀번호불일치" :

             %>

             <script language="javascript">

                    alert("비밀번호불일치");

                    location.href = "<%= request.getContextPath() %>/index.jsp";

             </script>

             <%

             break;

       case "아이디불일치" :

             %>

             <script language="javascript">

                    alert("아이디불일치");

                    location.href = "<%= request.getContextPath() %>/index.jsp";

             </script>

             <%

             break;

       }

%>

 


생성

Order.java 

OrderDao.java

Order_Customer.java : Order객체와 Customer객체를 SETTING / GETTING 하는 클래스

 

OrderList.jsp : 출력하는 JSP파일


INNER JOIN

SELECT 

FROM

INNER JOIN

ON



select orders.id , orders.date, orders.amount, orders.customer_id, customers.name

from orders

inner join customers

on customers.id = orders.customer_id;

 





30DAY / jQuery

2017. 5. 17. 09:06

http://api.jquery.com/


자바스크립트는 실행문

ready를 쓰면 스크립트문을 위에쓸수있음


  • focus & blur
  • animate
  • toggle

DOM변경

  • append
  • remove & empty


AJAX

참고사이트

https://mvnrepository.com/




Gson gson = new Gson();

      String json = gson.toJson(list);

      System.out.println(json);

      out.println(json);




<script>

      $(document).ready(function(){

            $('button').click(function(){

                  $.get("./studentList.jsp",function(list){

                        console.log(list);-->콘솔창출력

                        $(list).each(function(index,item){

                             $('tbody').append('<tr>');

                             $('tbody').append('<td>'+item.no+'</td>');

                             $('tbody').append('<td>'+item.category+'</td>');

                             $('tbody').append('<td>'+item.title+'</td>');

                             $('tbody').append('<td>'+item.content+'</td>');

                             $('tbody').append('<td>'+item.day+'</td>');

                             $('tbody').append('</tr>');

                        });

                  });

                  });

            });

</script>

*studentList 데이터베이스 select하는 jsp



입력폼과 리스트처리 _DAO


       public ArrayList<Member> mAllSelect() throws ClassNotFoundException, SQLException{

            

             DriverDB db = new DriverDB();

             conn = db.driverDbcon();

      

             ArrayList<Member> alm = new ArrayList<Member>();

             pstmt = conn.prepareStatement("select * from tb_member");

             rs = pstmt.executeQuery();

             while(rs.next()){

                    Member m = new Member();

                    m.setM_id(rs.getString("m_id"));

                    m.setM_pw(rs.getString("m_pw"));

                    m.setM_level(rs.getString("m_level"));

                    m.setM_name(rs.getString("m_name"));

                    m.setM_email(rs.getString("m_email")); 

                    System.out.println(m);

                    alm.add(m);


             }

            

             pstmt.close();

             conn.close();

             rs.close();

             return alm;

            

       }


ArrayList를 쓰는이유?


<%

        Mdao dao = new Mdao();

 

       ArrayList<Member> get_alm = dao.mAllSelect();

 

       for(int i=0;i<get_alm.size();i++){

                   

             Member m = get_alm.get(i);

 %>

          <tr>

                 <td><%=m.getM_id()%></td>

                 <td><%=m.getM_pw()%></td>

                 <td><%=m.getM_level()%></td>

                 <td><%=m.getM_name()%></td>

                 <td><%=m.getM_email()%></td>

                 <td>

          </tr>

<%}%>


28DAY / DAO , DTO

2017. 5. 15. 17:03

DAO(Data Access Object) : 데이터 베이스에 접속, 명령전송을 전담하는 클래스 

DTO(Data Transfer Object) : 특정 테이블의 정보를 레코드 단위로 정의해놓은 클래스 



package DTO;

 

public class Member {

//전역변수 = 필드 = 멤버 = 멤버필드 = 프로필터  

       private String m_id;

       private String m_pw;

       private String m_level;

       private String m_name;

       private String m_email;

      

       public String getM_id() {

             return m_id;

       }

       public void setM_id(String m_id) {

             this.m_id = m_id;

       }

       public String getM_pw() {

             return m_pw;

       }

       public void setM_pw(String m_pw) {

             this.m_pw = m_pw;

       }

       public String getM_level() {

             return m_level;

       }

       public void setM_level(String m_level) {

             this.m_level = m_level;

       }

       public String getM_name() {

             return m_name;

       }

       public void setM_name(String m_name) {

             this.m_name = m_name;

       }

       public String getM_email() {

             return m_email;

       }

       public void setM_email(String m_email) {

             this.m_email = m_email;

       }

 

}

 

 

 package DAO;

 

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

 

import driverdb.DriverDB;

import DTO.Member;

 

 

public class Mdao {

      

       Connection conn = null;

       PreparedStatement pstmt = null;

       ResultSet rs=null;

      

       public void mInsert(Member m) throws ClassNotFoundException, SQLException{

 

             DriverDB db = new DriverDB();

             conn = db.driverDbcon();

            

             try{

                    pstmt = conn.prepareStatement(

                                 "INSERT INTO tb_member VALUES (?, ?, ?, ?, ?)");

 

                    pstmt.setString(1, m.getM_id());

                    pstmt.setString(2, m.getM_pw());

                    pstmt.setString(3, m.getM_level());

                    pstmt.setString(4, m.getM_name());

                    pstmt.setString(5, m.getM_email());

                   

                    pstmt.executeUpdate();

 

              }

             finally{

                    if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}

                    if (conn != null) try { conn.close(); } catch(SQLException ex) {}

             }

            

            

       }

       public void mDelete(String id) throws ClassNotFoundException, SQLException{

 

            

             DriverDB db = new DriverDB();

             conn = db.driverDbcon();

             try{

                    pstmt = conn.prepareStatement(

                                 "delete from tb_member where m_id=?");

                   

                    pstmt.setString(1, id);

      

                    pstmt.executeUpdate();

            

             }

             finally{

                    if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}

                    if (conn != null) try { conn.close(); } catch(SQLException ex) {}

             }

            

            

       }

       public void mUpdate(Member m) throws ClassNotFoundException, SQLException{

            

             DriverDB db = new DriverDB();

             conn = db.driverDbcon();

            

             pstmt = conn.prepareStatement(

                                 "UPDATE tb_member SET m_pw=?,m_level=?,m_name=?,m_email=? WHERE m_id=?");

                   

                    pstmt.setString(1, m.getM_pw());

                    pstmt.setString(2, m.getM_level());

                    pstmt.setString(3, m.getM_name());

                    pstmt.setString(4, m.getM_email());

                    pstmt.setString(5, m.getM_id());

                   

                    pstmt.executeUpdate();

                   

                    pstmt.close();

                    conn.close();

            

       }

       public ArrayList<Member> mAllSelect() throws ClassNotFoundException, SQLException{

            

             DriverDB db = new DriverDB();

             conn = db.driverDbcon();

      

             ArrayList<Member> alm = new ArrayList<Member>();

             pstmt = conn.prepareStatement("select * from tb_member");

             rs = pstmt.executeQuery();

             while(rs.next()){

                    Member m = new Member();

                    m.setM_id(rs.getString("m_id"));

                    m.setM_pw(rs.getString("m_pw"));

                    m.setM_level(rs.getString("m_level"));

                    m.setM_name(rs.getString("m_name"));

                    m.setM_email(rs.getString("m_email")); 

                    System.out.println(m);

                    alm.add(m);

                    System.out.println(alm + "<---alm");

             }

            

             pstmt.close();

             conn.close();

             rs.close();

             return alm;

            

       }

       public Member mSelectforUpdate(String mid) throws SQLException, ClassNotFoundException{

            

             DriverDB db = new DriverDB();

             conn = db.driverDbcon();

            

             Member m = new Member();

                          

             pstmt = conn.prepareStatement("select * from tb_member where m_id=?");

             pstmt.setString(1, mid);

             rs = pstmt.executeQuery();

            

             if(rs.next()){

                    System.out.println("select 쿼리 실행 결과 있다");

                    m.setM_id(rs.getString("m_id"));

                    m.setM_pw(rs.getString("m_pw"));

                    m.setM_level(rs.getString("m_level"));

                    m.setM_name(rs.getString("m_name"));

                    m.setM_email(rs.getString("m_email")); 

             }

             pstmt.close();

             conn.close();

             rs.close();

            

             return m;

       }

 

}

 

 DAO와 DTO를 이용하면 jsp문이 간단해진다.


ex) insert_pro.jsp

<%@ page import = "DAO.Mdao"%>

<% request.setCharacterEncoding("euc-kr"); %>

 

 

<jsp:useBean id="m" class="Dto.Member"/>

<jsp:setProperty name="m" property="*"/>

<%

       Udao udao = new Udao();

       udao.uUpdate(m);

 

       response.sendRedirect(request.getContextPath() + "/usersearch/user_search_list.jsp");

%>


+ Recent posts