Java-аналог C # SqlConnection и уровень доступа к данным (моя попытка) - PullRequest
0 голосов
/ 21 декабря 2009

Я пытаюсь работать с доступом к данным Java, так что вот с чем я пришел:Скажи мне, что ты думаешь об этом?(Это немного похоже на SqlConnection из C #)

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;
        }
    }
}

Думаю, я собираюсь использовать его вот так

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();
            }
}

1 Ответ

1 голос
/ 21 декабря 2009

Если вы хотите изучать Java JDBC, это нормально. Я бы не использовал заглавные имена методов (обычно это C #, а не java) и использовал бы регистратор (в основном log4j, но выбирал ваш любимый вариант) вместо stdout и stderr.

Catching Exception - действительно плохая практика; Лучше всего сначала перехватить все конкретные исключения, чтобы вы могли сделать разумное сообщение об ошибке. После этого вы всегда можете поймать Exception, если действительно думаете, что сможете заставить работать ваше программное обеспечение.

В этом конкретном случае я бы поймал определенные исключения в Connect и выбросил мою домашнюю сборку CannotConnectException (originalException). Это исключение не является редкостью, но также не является нормальным потоком, типичным для проверенного исключения.

Если вы хотите сделать что-то масштабируемое, по крайней мере, используйте Apache DBCP , вместо него пул соединений с базой данных.

Если вы хотите узнать что-то используемое в большинстве приложений, связанных с базами данных Java, выберите Hibernate или EJB3 (также выполненный Hibernate). Вы действительно больше не видите слишком много сырых JDBC-приложений в дикой природе.

...