JDBC

 | JAVA
2012. 5. 8. 18:31

JDBC[제이디비씨]자바로 작성된 프로그램을, 일반 데이터베이스에 연결하기 위한 응용프로그램 인터페이스 규격이다. 이 응용프로그램 인터페이스는 데이터베이스 관리시스템에 넘겨질 SQL 형태의 데이터베이스 접근요구 문장을, 각 시스템에 맞도록 바꾸어준다. 처리 결과도, 이와 비슷한 인터페이스를 통해 얻게된다. JDBC는 ODBC와 아주 유사해서, 조그만 연결 프로그램만 있으면, ODBC 인터페이스를 통해 데이터베이스에 연결하는 JDBC 인터페이스를 사용할 수 있다. 예를 들어, 다수의 운영체계 플랫폼 상에 있는 많은 데이터베이스 제품들을 연결하도록 설계된 프로그램을 작성할 수 있으며, JDBC 문장을 사용한 프로그램은 심지어, 윈도우95에서 운영되는 마이크로소프트 액세스 데이터베이스에 접근하는 것도 가능할 것이다.

JDBC는 실제로는 두 계층의 인터페이스로 구성되어 있다. 주 인터페이스 외에도 JDBC "manager"에서 나온 API 가 있는데, 이것의 역할은 개별 데이터베이스 제품의 드라이버들과 차례대로 통신을 하는 것이다. 이때, 만약 필요하다면 JDBC-ODBC bridge와, 그리고 자바 프로그램이 원격 데이터베이스를 액세스하기 위해 네트웍 환경에서 실행되고 있다면 JDBC 네트웍 드라이버 등과의 통신도 수행한다.

JDBC가 원격 데이터베이스에 접근할 경우에는, 인터넷 파일 주소 구조의 강점을 이용하는데, 파일이름이 웹페이지 주소(URL) 체계와 아주 유사하게 보인다. 예를 들어, 자바 SQL 문장에서는, 다음과 같은 주소를 통해 원하는 데이터베이스를 인식할 수 있다.

 

jdbc:odbc://www.somecompany.com:400/databasefile

 

JDBC 는 커넥터 jar 파일이 있어야 하며. 보통

D:\tools\oraclexe\app\oracle\product\10.2.0\server\jdbc\lib // 위치에 잇다.

 파일명은 ojdbc14.jar 을 복사 하여 프로젝트 에 붙여 넣기 한후에 .  위의 그림처럼 패키지 마우스 오른쪽 프로퍼티브 후에 자바빌드 패치로 이동 하여 add jars 클릭후 붙여 넣은 ojdbc14.jar을 추가 한다.

 

이후 Connect 생성자 생성이 가능 하다.

 

이후 DAO 파일 생성시에 Arraylist의 제너레이션을 위한. simple.java 생성.

package kr.hun.bean;

public class Simple {
    private int sid=0;
    private String name="";
    private String tel="";
    public int getSid() {
        return sid;
    }
    public void setSid(int sid) {
        this.sid = sid;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getTel() {
        return tel;
    }
    public void setTel(String tel) {
        this.tel = tel;
    }
}

DAO 파일. 생성.

package kr.hun;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import kr.hun.bean.Simple;
public class SimpleDao {
    private String strconn="jdbc:oracle:thin:@localhost:1521" +
            ":xe";
    // 집에서는 익스 프레션./ 집에선 :xe 가 붙는다 // 본래는 :xe 대신 :orcl
    //e : java.sql.SQLException: IO 예외 상황: The Network Adapter could not establish the connection
    // 오류 시에 제대로 오라클에 접속 이안되는것을 말한다./ 이대에는 포트 번호 확인. 및 :xe or :orcl  아이디 패스워드 등을 확인 해야 한다. 오라클 켜짐 여부.
    private String strid="jdbc";
    private String strpass="jdbc";
    private  String strdriver="oracle.jdbc.driver.OracleDriver";
    Connection conn=null; // 연결 하는것
    ResultSet rs=null;    // 연결시 한줄씩 내리는것
    Statement sm=null;  // 연결 받아 온것을 한줄씩 받아 오는것
   
   
    public ArrayList<Simple> getData(String query){
        ArrayList<Simple> list = new ArrayList<Simple>();
        try {
            Class.forName(strdriver);
            conn = DriverManager.getConnection(strconn, strid, strpass);
            sm =conn.createStatement();
            rs = sm.executeQuery(query);
            while(rs.next()){
            int sid=rs.getInt("sid");
            String name=rs.getString("name");
            String tel=rs.getString("tel");
            Simple simple =new Simple();
            simple.setSid(sid);
            simple.setName(name);
            simple.setTel(tel);
            list.add(simple);
            //System.out.println("sid : "+sid+"name : "+name+"tel : "+tel);
            }
       
        } catch (Exception e) {
            System.out.println("e : "+e);
        }finally{
            if(rs!=null)try {rs.close();} catch (SQLException e) {e.printStackTrace();}
            if(sm!=null)try {sm.close();} catch (SQLException e) {e.printStackTrace();}
            if(conn!=null)try {conn.close();} catch (SQLException e) {e.printStackTrace();}
            // 닫지 않으면 메모리를 지속적으로 조금씩 잡아 먹는다. 반드시 close 시켜야 한다.
        }
        return list;
    }
    public int updateSimple(int sid,String name,String tel){
        int applieNum=0;
        // 생성시에 리턴값 1을 돌려 받기 위한 지역변수 applieNum 생성.
        try {
            Class.forName(strdriver);
            conn = DriverManager.getConnection(strconn, strid, strpass);
            String query="";
            query+="UPDATE simple set ";
            query+="name ='"+name+"', ";
            query+="tel='"+tel+"' ";
            query+="where sid='"+sid+"' ";
            sm =conn.createStatement();
            applieNum = sm.executeUpdate(query);
           
            // 집에서는 익스 프레션./ 집에선 :xe 가 붙는다 // 본래는 :xe 대신 :orcl
            //e : java.sql.SQLException: IO 예외 상황: The Network Adapter could not establish the connection
            // 오류 시에 제대로 오라클에 접속 이안되는것을 말한다./ 이대에는 포트 번호 확인. 및 :xe or :orcl  아이디 패스워드 등을 확인 해야 한다. 오라클 켜짐 여부.
       
        } catch (Exception e) {
            System.out.println("e : "+e);
        }finally{
            if(rs!=null)try {rs.close();} catch (SQLException e) {e.printStackTrace();}
            if(sm!=null)try {sm.close();} catch (SQLException e) {e.printStackTrace();}
            if(conn!=null)try {conn.close();} catch (SQLException e) {e.printStackTrace();}
            // 닫지 않으면 메모리를 지속적으로 조금씩 잡아 먹는다. 반드시 close 시켜야 한다.
        }
        return applieNum;
    }
    public int insertSimple(int sid,String name,String tel){
        int applieNum=0;
        try {
            Class.forName(strdriver);
            conn = DriverManager.getConnection(strconn, strid, strpass);
            String query="";
            query+="INSERT into simple (sid,name,tel) values ";
            query+="('"+sid+"', ";
            query+="'"+name+"', ";
            query+="'"+tel+"')";
           
            sm =conn.createStatement();
            applieNum = sm.executeUpdate(query);
           
            // 집에서는 익스 프레션./ 집에선 :xe 가 붙는다 // 본래는 :xe 대신 :orcl
            //e : java.sql.SQLException: IO 예외 상황: The Network Adapter could not establish the connection
            // 오류 시에 제대로 오라클에 접속 이안되는것을 말한다./ 이대에는 포트 번호 확인. 및 :xe or :orcl  아이디 패스워드 등을 확인 해야 한다. 오라클 켜짐 여부.
       
        } catch (Exception e) {
            System.out.println("e : "+e);
        }finally{
            if(rs!=null)try {rs.close();} catch (SQLException e) {e.printStackTrace();}
            if(sm!=null)try {sm.close();} catch (SQLException e) {e.printStackTrace();}
            if(conn!=null)try {conn.close();} catch (SQLException e) {e.printStackTrace();}
            // 닫지 않으면 메모리를 지속적으로 조금씩 잡아 먹는다. 반드시 close 시켜야 한다.
        }
        return applieNum;
    }
    public int deleateSimple(int sid){
        int applieNum=0;
        try {
            Class.forName(strdriver);
            conn = DriverManager.getConnection(strconn, strid, strpass);
            sm =conn.createStatement();
            String query="";
            query+="DELETE from simple where sid="+sid ;
            applieNum = sm.executeUpdate(query);
        //    System.out.println("applieNum : "+applieNum);
           
            // 집에서는 익스 프레션./ 집에선 :xe 가 붙는다 // 본래는 :xe 대신 :orcl
            //e : java.sql.SQLException: IO 예외 상황: The Network Adapter could not establish the connection
            // 오류 시에 제대로 오라클에 접속 이안되는것을 말한다./ 이대에는 포트 번호 확인. 및 :xe or :orcl  아이디 패스워드 등을 확인 해야 한다. 오라클 켜짐 여부.
       
        } catch (Exception e) {
            System.out.println("e : "+e);
        }finally{
       
            if(sm!=null)try {sm.close();} catch (SQLException e) {e.printStackTrace();}
            if(conn!=null)try {conn.close();} catch (SQLException e) {e.printStackTrace();}
            // 닫지 않으면 메모리를 지속적으로 조금씩 잡아 먹는다. 반드시 close 시켜야 한다.
        }
        return applieNum;
    }

   
}

 

 

 

 

이 글은 스프링노트에서 작성되었습니다.

'JAVA' 카테고리의 다른 글

SqlExploler(eclipse)  (0) 2012.05.08
자바 EXE 만들기.  (0) 2012.05.08
VisualSVN  (0) 2012.05.08
JAVA 에러코드  (0) 2012.05.08
JAVA 기초수업  (0) 2012.05.08
Posted by 사라링

VisualSVN

 | JAVA
2012. 5. 8. 18:29

 

서버 설치. http://www.visualsvn.com/server/download/

 

클라이언트 설치 :  http://subclipse.tigris.org/update_1.6.x

밑PDF 작성자 최재현 / 및 선용 아빠라인.

 

슬라이드1.JPG 슬라이드2.JPG 슬라이드3.JPG 슬라이드4.JPG 슬라이드5.JPG 슬라이드6.JPG 슬라이드7.JPG 슬라이드8.JPG 슬라이드9.JPG 슬라이드10.JPG 슬라이드11.JPG 슬라이드12.JPG 슬라이드13.JPG 슬라이드14.JPG 슬라이드15.JPG 슬라이드16.JPG 슬라이드17.JPG 슬라이드18.JPG 슬라이드19.JPG 슬라이드20.JPG 슬라이드21.JPG 슬라이드22.JPG 슬라이드23.JPG

 

이 글은 스프링노트에서 작성되었습니다.

'JAVA' 카테고리의 다른 글

SqlExploler(eclipse)  (0) 2012.05.08
자바 EXE 만들기.  (0) 2012.05.08
JDBC  (0) 2012.05.08
JAVA 에러코드  (0) 2012.05.08
JAVA 기초수업  (0) 2012.05.08
Posted by 사라링

JAVA 에러코드

 | JAVA
2012. 5. 8. 18:29

 

번 호 1
ERROR Exception in thread "main" java.lang.NoClassDefFoundError: 파일명
발생되는 경우 클래스 파일을 찾을 수 없는 경우
조 언 실행하려는 클래스 파일 이름이 제대로 되어 있는지 확인한다.
또한, CLASSPATH 설정이 제대로 되어 있는지 확인하며 (도스모드에서 set명령어)
만약, 되어있지 않다면 설정한다. (CLASSPATH = jdk1.3/jre/lib/rt.jar; 2-1강좌 참조)

번 호 2
ERROR cannot resolve symbol
symbol : class in(에러가 난 부분)
location : class StackTest(찾으려는 위치)
발생되는 경우 이해할 수 없는 클래스나 메소드, 변수명이 올경우
조 언 보통 이 에러는 철자가 틀렸을 경우에 많이 발생한다. 클래스, 메소드, 변수의 철자를 세심히 확인해 본다.
특히, 철자를 확인할때 대소문자 구분을 확실히 체크한다.(자바는 대소문자를 구별한다.) 그리고 클래스에서 발생할 경우 import를 해주었는지 확인해 봅니다.

번 호 3
ERROR non-static variable 변수이름(or method 메소드이름) cannot br referenced from a static context
발생되는 경우 static 메소드 안에서 static 으로 선언되지 않은 메소드나 변수를 참조(사용)했을 경우.
특히, 메소드의 경우는 인스턴스를 사용하지 않고 static메소드 내에서 바로 선언한 경우.
조 언 static 선언자의 사용여부를 살펴보고 static 메소드 안에 static으로 선언되어지지 않은 메소드나 변수가 있느지 확인해본다.
만약 그런것이 있으면 메소드를 새로 만들어 그쪽에서 선언한다. 단, 인스턴스를 생성해서 불러줘야 한다는 것을 잊지 말아야한다.

번 호 4
ERROR valiable 변수명 might not have been initialized
발생되는 경우 지역변수인 변수명의 변수가 초기화가 되어있지 않았을 경우
조 언 지역변수(메소드 내에서 선언한 변수)를 초기화 하지 않은채 선언했을 경우 발생한다.
멤버 필드가 아닌 경우는 반드시 변수 선언시 초기화를 해주어야 한다.
(멤버 필드는 자바 프로그램 자체에서 자동으로 default값으로 초기화 해준다.)

번 호 5
ERROR class 클래스명 is public, should be declared in a file named 클래스명.java
발생되는 경우 클래스명이 public으로 선언되었는데 파일명과 다를 경우
조 언 public으로 선언된 클래스가 있다면 반드시 그 클래스명과 파일명이 같아야 한다.
클래스명과 파일명의 대소문자 및 철자가 같은지 비교해 본다.
또한, public으로 선언된 클래스가 하나 이상 있는지 찾아본다.(반드시 하나만 있어야한다.)

번 호 6
ERROR push(java.lang.object)[메소드(인자로 받을 수 있는 형)] in java.util.Stack(메소드의 클래스) cannot be applied to (int)[잘못 들어간 형]
발생되는 경우 메소드에서 인자를 받을 때 받을 수 있는 형이 아닌 자료형 또는 클래스형을 사용할 경우
조 언 사용하는 메소드의 API를 참고하여 어떤 형을 인자로 받을 수 있는지 찾아본다.
API를 보지 못할 경우는 각 자료형으로 인자를 직접 바꾸어 본다.

번 호 7
ERROR java.lang.NoSuchMethodError: main
Exception in thread "main"
발생되는 경우 클래스 파일 안에서 main() 메소드를 찾을 수 없는 경우
조 언 자바 애플릿이 아닌 이상 자바 애플리케이션은 반드시 main() 메소드를 사용해야 합니다.
main() 메소드를 빼먹지 않았는지 확인해 보십시요. 또한 public static void main(String[] args) 형식으로 씌어졌는지도 확인해 보십시요.
(main 클래스는 반드시 위와 같은 형식으로 만들어져야 합니다.)

번 호 8
ERROR unreported exception java.io.IOException(Exception명); must be caught or declared to be thrown
발생되는 경우 예외가 발생하는데 예외처리를 해주지 않았을 경우
조 언 예외를 발생하는 메소드 같은 경우는 반드시 예외처리를 해주어야 합니다.
예외를 발생하거나 예외처리를 해야하는 메소드는 API를 확인해 보시면 알 수 있습니다.
그렇지 않다면 컴파일 후 지금처럼 에러가 난 예외를 예외처리해 주시면 됩니다.
또한, 예외를 처리할 때는 메소드 차원에서 throws 예외명을 이용해서 처리할 수 있고
try{} catch{} 구문을 이용해서 직접 처리해 주셔도 됩니다.(예외 강좌를 참고하세요.)
특히, 예외도 클래스이므로 반드시 예외가 들어간 패키지를 import 해주어야 합니다.

번 호 9
ERROR Note : Calculator.java(파일명) uses or overrides a deprecated API.
Note : Recompile with -deprecation for details.
발생되는 경우 JDK 버전이 높아졌거나 보안등의 기타이유로 사용이 deprecated된 메소드를 사용한 경우
조 언 이건 예외라기 보다는 경고 입니다.(실행하면 됩니다.^^)
JDK가 버전이 높아지거나 보안등의 이유에 따라 예전에 만들어졌지만 필요가 없어지거나 대체된 메소드가 생겨났습니다.
그런 메소드를 deprecated 되었다고 하는데 이것은 API상에 나왔있습니다.
또한, 컴파일할때 -deprecation 옵션주면 어떤 메소드가 deprecate됐는지 알수있읍니다.
사용이 중지 됐다고 보기 보다는 사용을 가능하면 하지 않게끔 해주는 거죠.
대치되었거나 버전 업된 메소드를 사용하시면 됩니다.


번 호 10
ERROR MouseEvent(클래스명) should be declared abstract; it does not define mouseDragged(java.awt.event.MouseEvent)[메소드명(메소드가 포함된 클래스)] in MouseEvent(클래스명)
발생되는 경우 implements한 Interface의 모든 메소드를 구현하지 않아서 발생됨
조 언 Interface는 모든 메소드가 선언만 되고 구현되지 않은 추상(abstract) 메소드입니다.
만약 Interface를 implements하려면 implements한 클래스가 Interface에서 선언한 모든 메소드를 구현해 주어야 합니다.
하나라도 빠질 경우 implements한 클래스도 추상 클래스로 보고 에러가 발생합니다.
에러에 구현해 주어야할 메소드명이 나오므로 그곳에 쓰여있는 메소드를 구현해 주면 됩니다.
만약, 그 메소드를 구현해 주었는데 에러가 나면 철자 및 대소문자를 다시 확인해 보십시요.


번 호 11
ERROR incompatible types
found : /null(입력한 자료형)
required : int(요구하는 자료형)
발생되는 경우 입력을 했을때 맞지 않는 자료형이나 클래스형을 입력할 경우
조 언 incompatible 은 '성미가 맞지 않는','모순된' 이라는 뜻을 가진 단어 입니다.
단어뜻 처럼 입력 경우 required 에 나타난 자료형 및 클래스형을 요구하는데
found 에서 나타난 자료형 및 클래스형을 써주어서 입력을 하지 못하게 되어서 발생하는 에러입니다.
found 에 나타난 자료형을 required 에 나타난 자료형으로 변경해 주시면 됩니다.


번 호 12
ERROR package java.servlet(패키지명) does not exist
발생되는 경우 import한 패키지가 존재하지 않을 경우
조 언 import한 패키지가 존재하지 않을 경우에 발생하는 에러입니다.
철자와 대소문자를 먼저 확인하고 CLASSPATH 설정을 확인해 보시기 바랍니다.
또한 그 곳에 패키지가 jar파일로 있는지도 확인해 보셔야 합니다.
(API에 나와있는 패키지는 rt.jar에 다 있습니다.
단 javax가 붙거나 다름으로 시작되는 확장 패키지는 설치해 주어야합니다.(javax.swing 제외))

번 호 13
ERROR java.lang.NullPointerException
Exception in thread "main"(메소드) java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:341)... [에러가 일어난 부분]
발생되는 경우 참조하거나 사용한 클래스 또는 자료형이 초기화 되지 않은 경우
조 언 보통 이것은 awt나 배열 부분에서 자주 발생하는데 초기화를 해주지 않아서 많이 발생합니다.
자바의 변수들은 기본적으로(자동으로 초기화 되는 멤버필드등을 제외하고) 초기화를 요구합니다.
에러에 체크된 부분을 검토해 보시고 초기화를 해주십시요.

번 호 14
ERROR ';'(빠진 부분) expected
발생되는 경우 문법상으로 써야할 것을 쓰지 않은 경우 발생합니다.
조 언 주로 ';'을 안써주시거나 아님 '()'(괄호)를 열기만 하고 닫지 않은 실수를 할 경우 발생합니다.
대부분 이 에러가 발생한 경우는 에러에 나온것을 소스에 추가해 주시면 됩니다.

번 호 15
ERROR unexpected type
required : value(요구하는 타입)
found : class(소스상 써준 타입)

발생되는 경우 써주어야 할 타입이 아닌 잘못된 타입을 써주었을 경우
조 언 unexpected type 에러를 해석하면 '기대하지 않은 타입'이란 뜻을 가지고 있습니다.
즉, 원하는 타입(required)이 아닌데 잘못된 타입(found)을 써준 경우 발생합니다.
에러 체크된 부분의 타입을 required 에서 나타난 타입으로 변경해 주시면 됩니다.


번 호 16
ERROR java.lang.ArrayIndexOutOfBoundsException
at Test.main(Test.java:10)[클래스.메소드(파일명:에러난 위치)]
Exception in thread "main"(예외가 던져진 메소드)

발생되는 경우 배열의 범위를 넘어선 값을 넣었을 경우
조 언 위의 에러는 특이하게 컴파일은 이상없이 되지만 실행을 하면 발생하는 에러입니다.
배열의 범위를 넘어설 경우에 발생하므로 에러난 위치의 배열의 참조 범위를 확인해보시고
선언해둔 배열의 범위에 맞게 조정해 주시면 됩니다.

번 호 17
ERROR illegal start of expression
발생되는 경우 선언자(modifier)를 잘못 집어 넣은 경우
조 언 에러의 단어뜻을 확인해 보면 '표현의 시작이 부적격 합니다.'하고 해석할 수 있습니다.
보통 선언자가 맞지 않거나 쓰일데가 아닌데 선언자를 줄 경우에 많이 발생합니다.
특히 메소드안에서 static 선언자를 쓴 경우에는 직격으로 볼수 있죠.
에러가 난 부분의 선언자를 제거하거나 맞는 것인지 다시 확인해 보십시요.

번 호 18
ERROR java.io.InputStream(클래스) is abstract; cannot be instantiated
발생되는 경우 abstract로 선언된 클래스를 직접 new 명령어를 이용하여 인스턴스화 할 경우
조 언 abstract로 선언된 클래스를 직접 new 명령어를 이용하여 인스턴스화 할 경우에 발생하는 에러입니다.
왜냐하면, 추상 클래스는 직접 new 명령어를 이용하여 인스턴스화 할수 없기 때문입니다.(객체를 못만든다구요.)
이 경우에는 인스턴스를 다른 방법으로 생성하시면 됩니다.
예를 들어 인스턴스를 반환하는 메소드를 이용한다거나 상속을 통해서 상속받은 클래스의 인스턴스를 만들어
직접 인스턴스를 만드는 효과를 낼수도 있구요. 원하시는 방법으로 바꾸어 보시길...

번 호 19
ERROR local variable name(변수명) is accessed from within inner class; needs to be declared final
발생되는 경우 Local Class의 변수를 final로 선언하지 않은 경우
조 언 Local Class의 변수는 참조변수의 참조값 변동을 방지하기 위하여 final 선언자를 붙여주어야 합니다.
변수에 final 선언자를 붙이면 변수는 값을 변동할 수 없는 상수 처럼 쓰이며
만약 이 값을 참조할 경우 자바는 이 값을 넘기는게 아니라 이 값의 복사본을 참조 값으로 넘기게 됩니다.
그러므로 Local Class에서 참조값 변동없이 변수를 참조할 수 있게 되는 것입니다.
Local Class를 정의해준 곳을 살펴보고 final 선언자를 확실하게 확인하시기 바랍니다.

번 호 20
ERROR inner classes cannot have static declarations
발생되는 경우 내부 클래스 안에서 static 선언자를 쓴 경우
조 언 내부 클래스 안에서는 static 선언자를 쓸수 없습니다.
내부 클래스 안에서 사용된 static 선언자를 제거해 주십시요.

번 호 21
ERROR referenceto List is ambiguous,both class java.util.List(클래스) in java.util(패키지)
and class java.awt.List(클래스) in java.awt(패키지) match
발생되는 경우 클래스 사용시 다른 패키지내에 동일이름의 클래스들이 있어서 참조가 모호할 경우
조 언 예시를 보면 아시겠지만 import 한 패키지중에 같은 이름을 사용하는 클래스를 클래스 이름만으로
생성함으로서 참조가 모호해질 경우 발생하는 에러입니다.
이와 같은 경우는 import를 하나 제거 하거나 아님 java.util.List 이런식으로
직접 그 클래스의 패키지를 같이 써줌으로서 모호성을 제거할수 있습니다.


번 호 22
ERROR m()(메소드명) in B(클래스명) cannot override m()(메소드명) in A(클래스명);
attempting to use incompatiable return type
발생되는 경우 클래스를 상속받고서 메소드를 오버라이드 하고자할때 잘못한 경우
조 언 클래스를 상속받고서 메소드를 오버라이드 할 경우에는 지켜야 하는 규칙이 있습니다.
1. 메소드의 이름이 같아야 합니다.
2. 메소드의 파라미터 개수, 데이터형이 같아야 합니다.
3. 메소드의 리턴형이 같아야 합니다.
4. 상위 메소드와 동일하거나 더 구체적인 Exception을 발생시켜야 합니다. => 아님 예외는 조상클래스의 메서드보다 많이 선언할 수 없다.
5. 상위 메소드와 동일하거나 접근범위가 더 넓은 접근 제한자를 사용해야 합니다.

님의 메소드 오버라이드시 위 규칙을 잘 지켰는가를 다시 한번 확인해 보세요.


번 호 23
ERROR getPathBetweenRows(int,int)(메소드) has protected access in javax.swing.jTree(클래스)
발생되는 경우 protected로 선언된 메소드를 상속 없이 직접 불러쓸 경우
조 언 protected로 선언되어 있는 메소드는 상속하거나 같은 package에 있을 때만 쓸 수 있습니다.
상속해서 다시 public 메소드로 값을 받던지 아니면
public 메소드 중에서 비슷한 기능을 하는 메소드가 있는지 찾아서 바꾸어주어야 합니다.

번 호 24
ERROR invalid method declaration; return type required
발생되는 경우 리턴 타입을 쓰지 않아 메소드의 선언이 잘못된 경우
조 언 리턴 타입을 쓰지 않아 메소드의 선언이 잘못된 경우에 발생하는 에러이므로
에러가 발생한 메소드를 확인해보고 리턴 타입을 맞게 적어주어야 합니다.

번 호 25
ERROR Error occurred during initialization of VM
java.lang.ExceptionInInitializerError
발생되는 경우 static으로 선언된 변수중 초기화가 안되어 있는 것이 있는 경우
조 언 static으로 선언된 변수중에 초기화가 안된게 있는 경우에 발생하는 에러이므로
에러가 발생한 변수를 확인해보고 알맞은 초기화를 시켜주거나 변수의 위치를
자동 초기화가 가능한 메소드 밖의 클래스 변수로서 사용하게 합니다.

번 호 26
ERROR Error opening registry key 'Software\JavaSoft\Java Runtime Environment'
Error: could not find java.dll
Error: could not find Java 2 Runtime Environment
발생되는 경우 중복설치 등으로 인해 레지스트리 키값이 잘못되어 있는 경우
조 언 중복설치 등으로 인해 레지스트리 키값이 잘못되어 있는 경우에 발생하는 에러이므로
레지스트리 편집기를 열어서 HKEY_LOCAL_MACHINE -> SOFTWARE -> JavaSoft에
보시면 3개의 키가 있을 겁니다. 그중에서 첫번째 키인 Java 런타임 환경 을 마우스
오른쪽 버튼으로 클릭하여 Java Runtime Environment로 이름을 바꿔주시면 됩니다.


번 호 27
ERROR Error Registry Key 'Sofrware\JavaSofrware\Java Runtime Environment\CurrentVerison'
has value '1.1',but '1.3' is requried.
Error: could not find java.dll
Error: could not find java 2 Runtime Enviroment.
발생되는 경우 중복설치 등으로 인해 레지스트리 키값의 자바 버전이 잘못되어 있는 경우
조 언 중복설치 등으로 인해 레지스트리 키값의 자바 버전이 잘못되어 있는 경우에 발생하는 에러이므로
레지스트리 편집기를 열어서 HKEY_LOCAL_MACHINE -> SOFTWARE -> JavaSoft -> Java Runtime Environment의 Current version의 값을 1.3으로 되어있는지 확인해 주시면 됩니다.


번 호 28
ERROR java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver(드라이버명)
발생되는 경우 JDBC로 데이터 베이스에 연결하는 중 드라이버를 찾지 못할 경우
조 언 JDBC를 연결하는 중에 드라이버를 찾지 못할 경우에 발생하는 에러이므로
각 데이터 베이스에 맞는 드라이버가 제대로 다운로드 되었는지 확인해 보시고
드라이버의 위치가 클래스 패스에 잡혀 있는지 확인해주시면 됩니다.

번 호 29
ERROR Method printIn(java.lang.String)(메소드명) not found in class java.io.PrintStream(클래스명)
발생되는 경우 자신이 사용한 클래스의 메소드가 맞지 않는(=없는)경우
조 언 자신이 사용한 클래스의 메소드가 맞지 않는(=없는) 경우에 발생하는 에러이므로
API를 통해서 사용하고자 하는 클래스와 메소드를 다시 한번 확인해 봅니다.
보통 이경우 메소드의 철자나 대소문자를 잘못 쓴 경우가 많으니 그점을 유심히 살표봅니다.
마지막으로 철자와 대소문자도 맞는다면 메소드의 인자의 객체형을 맞게 주었는지 확인해보면 됩니다.

이 글은 스프링노트에서 작성되었습니다.

'JAVA' 카테고리의 다른 글

SqlExploler(eclipse)  (0) 2012.05.08
자바 EXE 만들기.  (0) 2012.05.08
JDBC  (0) 2012.05.08
VisualSVN  (0) 2012.05.08
JAVA 기초수업  (0) 2012.05.08
Posted by 사라링

JAVA 기초수업

 | JAVA
2012. 5. 8. 18:29

 // 날짜 생각 없이 만들자.

1월 25일 (1일)

  1. JDK 설치

    www.orcale.com 에서 JAVA SE-> jdk 다운.. 후 설치..

    JAVA EE - Enterprise(기업..)

    JAVA ME -micro(휴대폰 등..)

    JAVA SE - Standard (기본)

  2. 환경변수 설정

    1. 내컴퓨터->속성->고급->환경설정-> 시스템변수의 CLASSPATH에 C:\Program Files\Java\jdk1.6.0_30\bin를 추가..
  3. 클래스명은 파일명과 동일하게 만들어야 한다.
  4. 자바는 모든명령문들이 class 내에 존재해야 한다.
  5. main method는 이 class를 실행할 때 최초 실행되는 method이다.
  6. 주석

    1. // - 한 줄 주석..
    2. /* 내용 */ - 여러줄 주석...
    3. /** 내용 */ - 특별한 주석.

 

1월 26일 (2일)

  1. 변수(Variable) - 임시저장공간 (자바의 정석 P.20)

    1. 변수타입

      * 기본형

      문자 - char

      숫자 - 정수 - byte, short, int, long

      실수 - float, double

      논리 - boolean

      * 참조형

기본형을 제외한 나머지.. (String , System 등)

2. 보수 = 보충해주는수..

  1. 10의 보수 4 > 6

 

3 > 7

3. 명명규칙..

  1. 대소문자가 구분되며 길이에 제한이없다.
  2. 예약어를 사용해서는 안된다..
  3. 숫자로 시작해서는 안된다.
  4. 특수문자는 " _ "와 " $ "만을 허용한다.
  5. 권장사항

    1. 클래스 이름의 첫 글자는 항상 대문자로 한다..
    2. 여러 단어 이름은 단어의 첫글자를 대문자로 사용한다..(낙타표기법.) 예) lastIndexOf, StringBuffer
    3. 상수의 이름은 대문자로 쓰고, 단어는 " _ " 로 구분한다. (변수는 값을 변경해도 되지만 상수는 값을 한번 정하면 바꿀수 없다.)

      • 예) final int NUM = 0;
      • NUM = 10; ->에러...
      • final int MAX_NUMBER = 0; <- 이런식으로 전부 대문자로 표시함.....
  6. 리터럴과 접미사

    1. 특수문자를 저장할때 사용 (자바의정석 P.26).. 역슬러시 (|)를 사용함..

      • String str = "그가 |"잘가|"라고 말했다. ";
      • 역슬러시를 저장할때도 ||으로 하면 특수문자인 | 로 인식한다.
    2. int i = 100; = 10진수 표현 >> (자바의정석 P.34)
    3. int oct = 0100; = 8진수 표현 0을 붙히면 8진수 라는 것을 의미
    4. int hex = 0x100; = 16진수 표현 0x 를 붙히면 16진수 라는 것을 의미
  7. 변수의 기본값과 초기화

    1. 초기화 = 변수의 처음 값으로 변경.
  8. 형변환 - 값의 타입을 다른 타입으로 변환하는것.(boolean을 제외한 7개의 기본형은 서로 형변환이 가능)

    1. 예) float형을 int 형으로 바꿀 때.. (자바의 정석P.36 표 참고.)

      • float f = 1.6f;
      • int i = (int)f;
    2. 변환시 값의 크기가 변환된 타입의 표현가능한 범위를 넘어가면 값 손실이 발생할 수 있다.

 

1월 27일 (3일)

  1. Overflow..
  2. 연산자. (자바의 정석 P.44)

    1. 단항 연산자 = 값이 하나만 필요로 하는 연산자..
    2. 이항 연산자 = 값이 두개를 필요로 하는 연산자..
    3. 삼항 연산자 = '?' , ':' 를 이용하여 값을 세개로 필요로 하는 연산자.. (조건식?참일경우:거짓일경우) x>y?a:b
    4. 대입 연산자 = 값을 대입 할 때 사용.. (int result = z + b;)
    5.  
    • i = j++ 은 i에 j값을 대입 한 뒤 j가 증가된다..
    • i = ++j 는 j를 증가한뒤 i에 대입된다..
    • 비트 전환 연산자 ' ~ '

      • byte b = 10;
      • System.out.println("~b = " + ~b); ==> -11
    • 이항연산자는 크기가 int보다 작은 자료형은 int 형으로 형변환 후 연산 된다..

      • byte a = 10;
      • byte b = 20;
      • byte c = a + b; <- int형으로 변환되기때문에 에러가 난다 그러므로
      • byte c = (byte)(a+b); <- byte로 형변환을 다시 시켜줘야함..
      •  
      •  

1월 30일( 4일)

  1. 연산자

    1. / = 나누기 연산자(몫을 저장 ex. 10/8 = 1)
    2. % = 나머지 연산자 (나눈 뒤 나머지값을 저장. ex. 10%8 = 2 )
    3.  
  2. 쉬프트연산자

    1. <<
    2. >>
    3. <<<
  3. 비교 연산자

    1. 대소비교 연산자

      1. <
      2. >
      3. <=
      4. >=
    2. 등가비교 연산자

      1. ==
      2. !=
    3. 논리 연산자

      1. && = (AND결합) 피연산자 양쪽 모두 true 이어야 결과값이 true.
      2. || =(OR결합) 피연산자 중 한 쪽만 true이면 true를 결과로 얻는다.
    4. 비트 연산자 - 이진 비트연산을 수행한다.

      1. & = (AND연산자) 피연산자 양 쪽이 모두 1 이어야 1을 결과로 얻는다. 그 외에는 0을 얻는다.
      2. | = (OR연산자) 피연산자 중 한 쪽의 값이 1 이면, 1을 결과로 얻는다. 그 외에는 0을 얻는다.
      3. ^ = (XOR연산자) 피연산자의 값이 서로 다를 때만 1을 결과로 얻는다. 그 외에는 0을 얻는다.
    5. 삼항 연산자

      1. ?: = (조건식) ? 식1: 식2 > 조건식이 true이면 식1을 false면 식2를 수행함.. if문과 비슷..
    6. 대입연산자

      1.  

 

1월 31일 (5일)

  1. 조건문

    1. if문
    2. switch
  2. 반복문

    1. for
    2. while
    3. do-while
  3. 입력 받기.
    1. BufferedReader..

      1. // 키보드로 부터 줄단위로 입력받기 위한 리더준비.
      2. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      3. String readStr1 = br.readLine(); //입력받은 값을 String형태로 저장.
      4. (생략..)
      5. //입력받은 String 값을 int형으로 바꿔서 계산하는 방법..
      6. int sum = Integer.parseInt(readStr1) + Integer.parseInt(readStr2) ;
      7. //Integer.parseInt(s), Double.parseDouble(s), Float.parseFloat(s) 등의 형태로 바꿀 수 있음.
    2. scanner...

      1. Scanner scan = new Scanner(System.in); //new Scanner
      2. String str = scan.next();//문자열 1개를 입력받기.(공백기준)
      3. String strLine = scan.nextLine();//문자열 1개를 입력 받기(엔터키 기준)
      4. int num = scan.nextInt();//숫자로 이루어진 문자열을 숫자형 데이터로 입력 받기
      5. System.out.println( strLine ); //test.... strLine = 엔터키 기준으로 입력을 받는다..
      6. System.out.println( num ); //test.... 숫자만 받아서 출력한다.
    3. JOptionPane

      1. String str = JOptionPane.showInputDialog("입력하세요.제발..;"); //다이얼로그 형식의 입력폼이 뜬다..
      2. System.out.println("다이얼로그에 입력한 문자열 : " + str);

 

2월 1일 (6일)

  1. 여러개의 점수를 입력받아 평균을 구한뒤 if문과 switch문으로 학점을 계산하는 코드...

    • workspace/Chapter4/BranchEx.java 참고
  2. 현재 시스템(pc)시간을 반환해주는 method

    1. System.currentTimeMillis();
  3. 반복문에서 break를 만나면 자신이 포함된 {}를 빠져나오고 continu를 넣으면 그 부분을 제외시키고 다음 조건을 수행함..

    • for(int j=1; j<=9; j++){//i*5까지 정상 순서로 출력
    • if(i==3&&j==5) break; or continu -->break = for문을 빠져나옴 continu = for문의 다음 조건을 수행.
    • System.out.println(i + "*" + j + "=" + i*j);
    • }
  4. while문.

    • while(조건식){ 조건식이 참인 동안 실행할 명령문}
  5. do while문.

    • do{조건식이 참인 동안 실행할 명령문들..
    • }while(조건식);

 

2월 02일

  • java에서 String 문자열 비교.

    • String 변수명 = "문자";
    • 변수명.equals("비교할 문자");
    • 변수명 == "비교할 문자"; => 비교가 되지 않는다...

 

2월 03일

  1. 변수명 한번에 바꾸기 : 바꿀 변수명에 커서를 가져간 뒤 -> alt + shift + r 누르고 난 뒤 바꾸면 그 변수의 이름이 한번에 다바뀜
  2. System.out.printf("")는

    1. System.out.printf("국어는 %d 수학은 %d 영어는 %d", kor, mat, eng) 식으로 문자 중간에 %d 같은 표현으로 입력될 수 있다..
    2. 여기서 %d는 10수 %o는 8진수 %x는 16진수.. 등등..검색 ㄱㄱㄱ
  3. Math.round() 함수는 소수점 반올림을 해준다.

 

5장. 배열

  1. 배열이란

    • 같은 타입의 여러변수를 하나의 묶음으로 다루는 것
    • 많은 양의 값을 다룰 때 유용하다.
  2. 선언 방법

    1. 타입[] 변수이름; -> int[] score; (권장 방법..)
    2. 타입 변수이름[]; -> int score[];
  3. 생성

    1. 변수이름 = new 타입[배열길이]; score = new int[5];
    2. 배열의 길이는 생략 가능하다. 만약 배열 길이를 지정해준 경우 그 길이를 벗어날 수 없다.
  4. 초기화 - 생성된 배열에 처음으로 값을 저장하는 것

    1. int[] score = {100, 90, 80, 70}; // 사용가능 선언과 초기화를 한번에 할때 가능..
    2. int[] score = new int[]{100, 90, 80, 70} // 사용가능
    3. | int[] score; | // 사용불가능 선언 따로 한뒤 초기화 시 이방법은 사용 불가.

      | score = {100, 90, 80, 70} |

    4. int[] score;

      score = new[]{100, 90, 80, 70} //사용가능

    5. 배열길이는 -> 배열이름.length 를 이용하면 알 수 있다.
    6. 랜덤 함수 ==> Math.random();

      1. random 함수는 0.0~1.0 까지만(1.0은 포함 x) 반환 하므로 *10을 해서 0~9까지의 값을 사용할 수 있도록한다..
      2. 더블 형태로 반환 하므로 int로 형변환을 해줘야 한다.

 

2월6일 월요일

*정렬 할때..

 

for(int i=0; i<score.length-1; i++){

for(int j=i+1; j<score.length; j++){

if(score[i]<score[j]){

temp = score[i];

score[i] = score[j];

score[j] = temp;

}

}

}

  1. 다차원 배열

    1. 선언방법

      • 타입[][] 변수이름; ->int[][] score;
      • 타입 변수이름[][]; ->int score[][];
      • 타입[] 변수이름[]; ->int[] score[];
    2. 생성 ==> int [][]score = new int[5][3] 이런식으로
    3. 생성과 초기화를 한번에..

      • int[][] score = new int[][]{ {100, 100, 100}, {20, 20, 20}, {30, 30, 30}, {40, 40, 40}, {50, 50, 50}}
  2. 가변 배열..

    1. 선언방법
    2. int[][] score = new int[5][];
    3. score[0] = new int[3];
    4. score[1] = new int[2];
    5. ...이하 생략...
    6. score[5] = new int[5];
    7. 이런식으로 배열 안의 배열의 크기를 바꿔서 지정할 수 있다..
  3. 간단하게 배열 복사하기..

    1. System.arraycopy(arg1, 0, arg2, 0, arg.length); 메소드를 이용하여 간단히 할 수 있다.
    2. System.arraycopy(복사할 배열, 복사할배열 시작 위치, 복사될 배열, 복사될 배열시작위치, 복사할 배열의 길이)

       

1. Overloding

  ▶ 생성자 메소드(함수)처럼 메소드의 형태가 동일하지만, 입력되는 파라미터들의 값들이 다른 경우에 overloading이라고 한다.

  ▶ 하나의 클래스에 여러 개의 overloading된 메소드들이 존재 가능하다.

2. null

  ▶ 참조하고 있는 객체가 없음을 의미한다.

  ▶ 객체생성을 하지 않은 상태에서 레퍼런스만 준비해둔 상태이다.

  ▶ String a = null;

       a라는 레퍼런스만 준비해둔 상태

       String 클래스 타입의 객체가 필요하다는 의미

3. instanceof

  ▶ 연산자 중에 객체단위에 적용되는 연산자

  ▶ A instanceof  B 는 A레퍼런스가 B타입의 객체를 가르키고 있는가를 의미한다.

  ▶ 객체의 타입을 검사하기 위해 사용.

4. this

  ▶ 객체형 변수(레퍼런스 자료형)에서 현재의 객체를 일컫는 용어이다.

  ▶ String str = new String("aaa"); 인 경우에는 현재 하나의 변수가 선언되어

      그 변수를 이용해서 객체를 언급하는것을 의미한다.

  ▶ 반면에 this.name = new String("aaa"); 와 같은 경우에는 현재 만들어 지고

     있는 객체의 name이라는 속성의 값이 "aaa"라는 것을 의미하게 된다.

이 글은 스프링노트에서 작성되었습니다.

'JAVA' 카테고리의 다른 글

SqlExploler(eclipse)  (0) 2012.05.08
자바 EXE 만들기.  (0) 2012.05.08
JDBC  (0) 2012.05.08
VisualSVN  (0) 2012.05.08
JAVA 에러코드  (0) 2012.05.08
Posted by 사라링

BLOG main image
.. by 사라링

카테고리

사라링님의 노트 (301)
JSP (31)
J-Query (41)
JAVA (24)
디자인패턴 (1)
스트러츠 (3)
안드로이드 (11)
오라클 (45)
우분투-오라클 (1)
이클립스메뉴얼 (6)
스프링3.0 (23)
자바스크립트 (10)
HTML5.0 (17)
정보처리기사 (1)
기타(컴퓨터 관련) (1)
문제점 해결 (3)
프로젝트 (2)
AJAX (4)
하이버네이트 (3)
트러스트폼 (11)
Jeus (2)
재무관리(회계) (5)
정규식 (5)
아이바티스 (8)
취미 (2)
소프트웨어 보안 관련모음 (0)
정보보안기사 (6)
C언어 베이직 및 프로그램 (3)
보안 관련 용어 정리 (2)
넥사크로 (6)
웹스퀘어_ (0)
Total :
Today : Yesterday :