2009-12-21 6 views
0

내가 자바 데이터 액세스 작업을 시도하고, 내가 해낸이 :
당신이 (그것은 의
에 대해 어떻게 생각하십니까 말해 C에서 #도록 SqlConnection 같은 약간)자바 아날로그

import java.sql.*; 
public class SqlConnection { 

    Connection connection; 

    public Connection GetConnection() {return connection;} 

    public void Connect(String cs, String user, String pass) 
    { 
     try { 
       Class.forName("net.sourceforge.jtds.jdbc.Driver");  
       connection = DriverManager.getConnection(cs, user, pass); 
       System.out.println("connected"); 

       } catch (Exception e) {   
       e.printStackTrace(); 
      } 
    } 

    public void Disconnect() 
    { 
     if(connection != null){ 
      try { 
       connection.close(); 
      } catch (SQLException e){ 
       e.printStackTrace(); 
      } 
      connection = null; 
     } 
    } 
} 

난 당신이 자바 JDBC를이 잘되어 배우고 싶은 경우에 나는이

public class MyDAL { 
public Foo[] GetFoos() 
{ 
SqlConnection conn = new SqlConnection(); 
PreparedStatement comm = null; 
ResultSet rs = null; 
     try { 
      conn.Connect(cs, user, pass);   
      comm = conn.GetConnection() 
      .prepareStatement("SELECT * FROM foos"); 
      rs = comm.executeQuery();   
      while (rs.next()) {      
        String s = rs.getString("name"); 
        ... 
        }   
      } catch (Exception e) {   
      e.printStackTrace(); 
      } 
      finally 
      { 
           DBUtil.Close(rs); 
           DBUtil.Close(comm); 
        conn.Disconnect(); 
      } 
} 
+0

귀하의 질문에 명확하지 않습니다. 그게 좋은 접근 방법일까요? 그건 꽤 주관적이지만 최소한 연결을 필요로 할 때마다 (즉, 충분하다면) Class.forName을 호출 할 필요가 없으며 예외를 사용하여 고통을 느끼게 만듭니다. 코드가 맞는지 여부 아니요, 컴파일되지 않습니다. 당신은 조금 정리하고 당신이 묻고있는 것을 명확히 할 수 있습니까? –

+0

어디서 Class.forName을 넣을 수 있습니까? 매번 eat을 호출 할 필요가 없습니다. (이 SqlConnection의 인스턴스를 많이 생성 할 것입니다.) – Omu

답변

1

처럼 사용하는 것 같네요. 나는 대문자로 된 메소드 이름 (보통 C#, java가 아님)을 사용하지 않고 stdout 및 stderr 대신 logger (주로 log4j를 사용하지만 좋아하는 flavor를 선택)를 사용합니다.

캐칭 예외는 실제로 나쁜 습관입니다. 최상의 모든 특정 예외를 잡아서 합리적인 오류 메시지를 만들 수 있습니다. 그 후에도 예외를 잡을 수 있습니다. 실제로 소프트웨어를 작동시킬 수 있다고 생각한다면 언제든지 예외를 발견 할 수 있습니다.

이 특별한 경우에는 Connect에서 특정 예외를 잡아 내고 CannotConnectException (originalException)을 생성합니다. 이 예외는 드문 일이 아니지만 검사 된 예외의 일반적인 일반적인 흐름이 아닙니다.

확장 가능한 작업을 수행하려면 최소한 Apache DBCP이라는 데이터베이스 연결 풀을 사용하십시오.

대부분의 Java 데이터베이스 관련 응용 프로그램에서 사용되는 것을 배우려면 Hibernate 또는 EJB3 (최대 절전 모드에서도 수행)으로 이동하십시오. 더 이상 야생에서 원시 JDBC 응용 프로그램을 너무 많이 보지 못합니다.

+0

내 응용 프로그램은 데이터베이스에서 4 개의 저장 프로 시저 만 반환해야합니다. 3 열의 데이터가있는 행. 그러나 실제로는 빠르게 수행해야합니다. – Omu

+0

빠른 속도가 빠릅니까? 나는 속도가 자바 코드보다 SQL 서버에 더 의존한다고 생각한다. 스토어드 프로 시저의 효율성과 테이블의 인덱싱은 일반적으로 더 중요합니다. 표시하는 코드는 느리지 만 최대 절전 모드 나 다른 모드는 아닙니다. – extraneon

+0

글쎄, 그래,하지만 왜 내가 최대 절전 모드 또는 아무것도 다른 하나 또는 3 문자열을 각각 반환하는 4 절차를 실행하는 것입니다 걱정해야합니까 – Omu

관련 문제