database 에 접속하여 아래 명령어를 입력 하면 접속 정보가 나열 된다.


show processlist;


Application 개발 당시 DB 연동 문제로 골머리가 썩을 때에 사용하면 유용 하다.



Query 사용 시 Rownum 이 필요 할 때가 있다.


사용 방법.


select

  @row_number:=@row_number+1, data.*

from

  (select @row_number:=0) as rownum, data


임시 변수를 만들어 놓고, 매 회 추가 되는 방법을 사용 한다.



localhost 에서 접속 시도 하는 경우 발생 하는 에러 이다. socket 설정을 해줘야 한다.


Step 1.  mysql 설정 파일 변경 하기

/etc/my.cnf 파일에 추가 한다.


[client]

port    = 3306

socket  = /var/lib/mysql/mysql.sock


[mysqld]

port    = 3306

socket  = /var/lib/mysql/mysql.sock


Step 2.  mysql 재시작 하기

서버를 재시작 한다.


sudo service mysqld restart

Shutting down MySQL.. SUCCESS! 

Starting MySQL. SUCCESS! 


Step 3.  접속 확인 하기

mysql -u[username] -p[password] [database]

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A


Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.6.12 Source distribution


Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql>


접속을 확인 할 수 있다.



mysql-connector-java-5.1.22-bin.jar


Java로 Dbms에 접속하여 데이터를 가지고오는 행위를 할 때에 JDBC를 이용한다. JSP 페이지에서 작성을 했고 Apache Tomcat을 이용 하였다. 라이브러리 파일은 WebContent/WEB-INF/lib 폴더에 넣도록 한다. 파일로 첨부 하였다. 간단한 예제를 살펴 보도록 하자.



<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%
   
    // STEP1: mysql 드라이버 로드
    Class.forName("com.mysql.jdbc.Driver");

    // STEP2: Connection 생성
    Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/whitelife", "whitelife", "whitelife");

    // STEP3: Query 작성
    PreparedStatement preparedStatement = connection.prepareStatement("select * from tb_test where test_no = ?");
   
    // STEP4: 조건 처리
    preparedStatement.setInt(1, 2);

    // STEP5: 실행 -> 결과 값 받기
    ResultSet resultSet = preparedStatement.executeQuery();
   
    // STEP6: 결과 값 보기
    while (resultSet.next()) {
        out.println(resultSet.getInt("test_no"));
        out.println(resultSet.getString("title"));
        out.println(resultSet.getString("content"));
        out.println(resultSet.getString("create_date"));
    };
   
    resultSet.close();
   preparedStatement.close();
   connection.close();


%>



간단하게 작성 해보았다. 중요한건 Java Application 에서 Dbms 로 Connection 을 했다는건 즉 명시적으로 연결을 끊어 줘야 한다. 굵은 코드 부분은 꼭 작성 해야 한다. out.println 은 JSP 내장객체를 이용 한 것 이다. 웹 브라우저 화면에 출력이 된다.



아래의 Query를 보도록 하자.



show procedure status where db = 'db_test'



db명을 입력 하면 해당 procedure의 상태를 볼 수 있다.


'Database' 카테고리의 다른 글

OSX 에 PostgreSql 설치 하기  (1) 2013.03.02
PostgreSql dump 복구 하기  (0) 2013.03.01
Mysql procedure 에서 select, insert 하기 (into)  (0) 2012.12.13
Mysql procedure 사용하기  (0) 2012.12.12
Mysql 변수 사용하기  (0) 2012.12.11


아래의 샘플을 보도록 하자.



delimiter $$

drop procedure if exists test_procedure $$

create procedure test_procedure(p_test varchar(100), p_test_a varchar(10))
begin


-- 선언 부

declare v_test1 int default 0;

declare v_test2 int default 0;


-- 조회

select

test1,

test2

into v_test1, v_test2

from

tb_test;


-- 등록

insert tb_proc_test (test) values (v_test1);

insert tb_proc_test (test) values (v_test2);


end $$

delimiter;




조회 하는 부분을 보면 into 구문을 볼 수있다. 여러개의 값을 변수에 넣으려면 제일 하단부에 순서대로 나열 한다.

변수에 값이 들어 가는 것을 insert 구문을 통해서 확인 할 수 있다.


'Database' 카테고리의 다른 글

PostgreSql dump 복구 하기  (0) 2013.03.01
Mysql procedure 상태 확인하기  (0) 2012.12.13
Mysql procedure 사용하기  (0) 2012.12.12
Mysql 변수 사용하기  (0) 2012.12.11
Mysql sec_to_time 숫자를 시간으로 바꾸기  (0) 2012.12.11


Mysql procedure 기본 형태 이다.



delimiter $$

drop procedure if exists test_procedure $$

create procedure test_procedure(p_test varchar(100), p_test_a varchar(10))
begin

// process

end $$

delimiter;



실행은 아래와 같은 방법을 이용 한다.



call test_procedure('a', 'b');




변수는 같은 세션에서만 사용이 가능하다.



set @number = 2;

select @number;



아래의 Query를 실행 시켜보면 2가 출력 되는 것을 볼 수 있다.


+ Recent posts