검색결과 리스트
Java/SQL 에 해당되는 글 3건
- 2008.09.08 Oracle 사용시 네트워크 에러날때(Microsoft Loopback Adapter 설치)
- 2008.06.30 Erwin에서 MySQL을 이용해보자
- 2008.06.27 sql 문법
오라클을 설치할 때, 제품별 필요검사를 실시하다가 다음과 같은 에러를 만나는 경우가 있다.
---
>>검사가 완료되었습니다. 이 검사에 대한 전반적인 검사 : 실행되지 않음<<
권장사항 : 오라클은 DHCP 할당 방식의 IP주소를 사용하는 시스템에서의 설치를 지원합니다.
그러나 그렇게 하기 위해서는 먼저 MICROSOFT의 LOOPBACK ADAPTER를
시스템의 기본 네트워크 어댑터로 구성해야 합니다.
어쩌구저쩌구...
---
에러가 발생한다고 해서 오라클이 설치되지 않거나 문제가 발생하는 것은 아니지만,
뭔가 찝찝한 것이 싫다면 아래처럼 루프백 어댑터를 설치해 보자.
1. | 시작을 누른 다음 제어판을 누릅니다. |
2. | 클래식 보기에 있을 경우에는 제어판의 왼쪽 창에서 종류별 보기로 전환을 누릅니다. |
3. | 프린터 및 기타 하드웨어를 두 번 누르고 다음을 누릅니다. |
4. | 왼쪽 창의 참고 항목에서 새 하드웨어 추가를 누르고 다음을 누릅니다. |
5. | 예, 하드웨어를 연결했습니다.를 누르고 다음을 누릅니다. |
6. | 목록 맨 아래에서 새 하드웨어 장치 추가를 누르고 다음을 누릅니다. |
7. | 목록에서 직접 선택한 하드웨어 설치를 누르고 다음을 누릅니다. |
8. | 네트워크 어댑터를 누르고 다음을 누릅니다. |
9. | 제조업체 상자에서 Microsoft를 누릅니다. |
10. | 네트워크 어댑터 상자에서 Microsoft Loopback Adapter를 누르고 다음을 누릅니다. |
11. |
마침을 누릅니다. |
---
XP일 경우, 비스타도 비슷함.
IP는 192.168.0.1
서브넷마스크는 255.255.255.0을 입력한다.
어느사이엔가 데이터베이스 모델링 툴의 대명사가 되어버린 ERWin. 데이터베이스 설계(대부분은 테이블레이아웃 만드는걸로 데이터베이스 설계를 대체하긴 하지만 -_-)작업 자체가 소프트웨어 프로젝트의 필수공정이다보니 사실 프로그래머치고 ERWin을 써보지 않았거나 들어보지 않은 사람은 그닥 많지 않을 것이다.
여담이지만, 변화하는 시대의 흐름을 프로젝트 방법론들이 못따라가고있다는 생각을 많이 한다. 사실 예전처럼 자기 데이터베이스만 덜렁 갖는 독립시스템보다는 서로 네트웤을 통해 연결되어있는 시스템들이 대세를 이루고 있지 않은가.
이 경우 자기 데이터베이스가 아니라 남의 데이터베이스를 소켓, Tuxedo 등의 RPC성 서비스, 웹서비스 콜, LDAP 조회 등 다양한 방법을 통해 읽어오는 경우가 많은데, 보통들 보면 테이블 없어서 개발못한다는 얘기는 해도 인터페이스 명세 없어서 개발 못한다는 얘기들은 안하는걸 보면, 다들 인터페이스는 시스템 설계단계에서 풀어야 할 문제가 아니라 해당 인터페이스를 필요로 하는 개별 개발자가 알아서 해결해야할 문제로 보고있지 싶다.
어쨌든, ERWin을 사용하게 되면 여간 골치아프지 않은 문제 중의 하나가 바로 mysql과의 궁합 문제이다. 이놈의 모델링툴이 mysql을 지원하지 않기 때문. 지금도 구글에서 mysql erwin으로 검색해보면 왜 이게 지원이 안되냐고 아우성치는 수많은 모델러 및 개발자들을 만날 수 있다.
일단 다소간의 아쉬움을 달래보고자, ODBC를 이용해서 ERWin을 mysql에 붙이는 방법을 소개한다. 단, 이 방법은 auto_increment와 같은 mysql만의 독자기능을 전혀 수용하지 못하므로, 이미 존재하는 데이터베이스 스키마에서 ERD를 뽑아내서 산출물 목록에 살포~시 끼워넣는 정도로 활용하도록 하자.
아래에서는 위와 같이 ERWin의 reverse engineering을 이용해 ERD를 뽑아내는 예제를 보이고자 한다. 귀차니즘으로 인해 설명은 생략하나, 스크린샷이 워낙 직관적이므로 큰 무리는 없으리라 생각한다. ^^
1. Mysql ODBC 설치
-ODBC 드라이버 최신버전을 http://dev.mysql.com/downloads/connector/odbc/3.51.html에서 다운받아 설치
2. ODBC 데이터소스 설정
-제어판 > 관리도구 > 데이터원본(ODBC)를 실행하면 아래와 같은 화면이 나온다. '추가' 선택
-MySQL에 연결할 데이터소스 만들어야 하므로 MySQL 선택
-데이터소스 접속정보를 입력한다. 실제 내용은 보안상 생략 ^^
-짜잔~ comictestdb라는 이름의 ODBC 데이터소스가 생성되었다.
3. ERWin 실행하여 reverse engineering
-Tools > Reverse Engineer 메뉴 선택
-모델종류 선택: Physical만 선택해도 상관없으나 혹시 나중에 논리모델을 추가할 경우를 대비해서 Logical/Physical 선택
-Stored Procedure같은건 제외하고 Table만 가져오기 선택
-그렇게 하고 나면 접속창이 뜬다. Database에는 아까 ODBC 설정에서 만들어둔 ODBC 데이터소스를 선택.
-짜잔~ ERD가 뜬다. 인자 모델들간의 상관관계만 선으로 찍찍 연결해주면 끝.
<출처:http://tong.nate.com/zauin09/12220478>
: 많은양의 자료를 특정한 규칙에 맞게 저장장치에 보관하여 필요한
업무에 사용하는 저장매체
※ DBMS
데이타베이스 안에 있는 데이타를 관리하는것
(읽기,변경,삭제,추가가 가능)
※기본적인 SQL문
1. create문(테이블생성)
create table 테이블명(필드이름 데이터타입 [not null], 필드이름 데이터타입 [not null].........);
예) create table member(name varchar(20), email varchar(30));
2. drop문
drop tabele 테이블명 : 테이블제거
drop database 데이타베이스명 :DB삭제
예)drop table member; //member테이블 제거
3. alter문(table구조변경)
alter table 테이블이름 add 필드이름 데이터타입 [not null];
예)alter table member add addr varchar(50); //member테이블에 addr필드 추가
alter table 테이블명 add primary key (필드명) //기본키설정
4. use 데이타베이스명(사용할 데이타베이스)
예) use member;
5. show 테이블명/show 데이타베이스명 (테이블/DB보기)
예) show member
show mem_table
6. desc 테이블명(테이블속성(구조)보기)
예) desc mem_table
7. 질의문(Query)
(1) select문(테이블의 레코드 검색)
select 필드리스트 from 테이블명 [where 조건] [group by 필드리스트] [having 조건] [order by 필드리스트 [asc | desc]];
예) select * from member where addr like '%서울%'
(2) insert문(테이블에 레코드 추가)
insert into 테이블명 [(필드이름1, 필드이름2....)] value (data1,data2...)
예)insert into member(name, email, addr) values ('magic', ;magic@m.com', '서울');
(3) delete문(레코드 삭제)
delete from 테이블명 [where 조건]
예)delete from member name = 'magic'
(4) update문(데이터의 값변경)
update 테이블리스트 set 필드이름1=data1, 필드이름2=data2......where 조건문
예)update member set tel='123-4567' where name='magic'
=======================================================================================
JDBC 드라이버 로드 -> 데이타베이스 연결 -> SQL문실행 -> 결과처리 -> 데이터베이스와 연결 해제
1단계 : JDBC드라이버 로드
Class.forName("드라이버종류");
★ 드라이버 종류
1. Access드라이버(ODBC) : Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
2. MySQL 드라이버: Class.forName(“com.mysql.jdbc.Driver”);
3. 오라클 드라이버 : Class.forName(“oracle.jdbc.driver.OracleDriver”);
4. MS-SQL 드라이버 : Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver ");
ODBC(Open DataBase Connectivity)
JDBC (Java DataBase Connectivity)
--------------------------------------------------------------------------------------
2단계 : 데이터베이스 연결객체 생성
Connection con = DriverManager.getConnection(url, uid, pwd);
url : JDBC형식의 url
uid : 사용자명
pwd : 패스워드
예)Connection con = DriverManager.getConnection("jdbc:odbc:jdbc", "master","java");
1. Access인경우 : jdbc:odbc:ODBC명
2. 오라클인경우 : jdbc:oracle://localhost:1521:SID
3. MySQL인경우 : jdbc:mysql://localhost:3306/DB명
4. MS-SQL인경우 : jdbc:Microsoft:sqlserver://localhost:1433;databasename=DB명
★ sql 에서 한글이 깨질경우
url에 jdbc:mysql://localhost:3306/DB명?useUnicode=true&characterEncoding=euckr
---------------------------------------------------------------------------------------
3단계 : SQL문실행
(방법1)
Statement stmt=null;
stmt = conn.createStatement();
String sql="insert into PostDBTest values +"('"+sname+"','"+stel+"','"+saddr+"')";
stmt.executeUpdate(sql);
(방법2)
PreparedStatement pstmt=null;
String sql="insert into PostDBTest values(?,?,?)";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, sname);
pstmt.setString(2, stel);
pstmt.setString(3, saddr);
pstmt.executeUpdate();
(참고)-------------------------------------------------------------------------------
i) executeUpdate() : insert, update, delete, create문
II) executeQuery() : select문
int executeUpdate()
int : 처리된 결과 개수 (입력 or 수정된 개수 …)
ResultSet exeucteQuery()
ResultSet : select문의 결과 집합 (테이블)
Cursor의 위치를 이동(next())해 가며 결과를 가져옴(getXxxx())
예)
String query = “SELECT COF_NAME, PRICE FROM COFFEES”;
ResultSet rs = stmt.executeQuery(qeury);
while( rs.next() )
{
String s = rs.getString(“COF_NAME”);
float n = rs.getFloat(“PRICE”);
System.out.println(s + “ “ + n);
}
----------------------------------------------------------------------------------------
4단계 : 결과처리
String str = "select name,age from member";
ResultSet rs = stmt.executeQuery(str);
--------------------------------------------------------------------------------------
5단계 : 데이타베이스와 연결해제
rs.close(); //ResultSet해제
stmt.close(); //Statement해제
con.close(); //Connection해제
★레코드이동
next() : 다음레코드
previouse() : 이전레코드
first() : 첫레코드
last() : 마지막레코드
====================================================================
※ DB설치
1. MySQL 5.0.x 설치
http://www.mysql.com 에서 다운 받으시오 ^^
(mysql-essential-5.0.22-win32.msi)
설치후.......
시작 -> 설정 -> 제어판 -> 관리도구 -> 컴퓨터관리 -> 서비스및 응용프로그램 ->
서비스 -> mysql (자동) 확인
2. MySQL-Front 3.2 설치
(MySQL-Front_Setup3.2.exe)
3. JDBC드라이버 설치
(mysql-connector-java-3.1.12.zip)
C:\Java\mysql-connector-java-3.1.12
해당 DB 드라이버(mysql-connector-java-3.1.12-bin.jar)를
JAVA_HOME/jre/lib/ext 와 TOMCAT_HOME/common/lib 아래에 복사
4. Database별 Driver 와 connection URL
DATABASE | VALUE
----------------------------------------------------------------------------------
ORACLE | DRIVER | oracle.jdbc.driver.OracleDriver
| URL | jdbc:oracle:thin:@hostname:port:SID
MSSQL | DRIVER | com.microsoft.jdbc.sqlserver.SQLServerDriver
| URL | jdbc:Microsoft:sqlserver://localhost:1433;databasename=DB명
MYSQL | DRIVER | org.gjt.mm.mysql.Driver
| | (또는)com.mysql.jdbc.Driver
| URL | jdbc:mysql://localhost:3306/DB명