0

私はJavaデータアクセスを使用しようとしているので、これは私が思いついたものです:
これについてどう思いますか
(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;
        }
    }
}

こんな感じで使うと思います

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

1 に答える 1

1

Java JDBC を学びたい場合は、これで問題ありません。私は大文字のメソッド名を使用せず (Java ではなく、通常は C# です)、stdout と stderr の代わりにロガー (ほとんどが log4j ですが、好みのフレーバーを選択してください) を使用します。

例外をキャッチすることは本当に悪い習慣です。適切なエラー メッセージを作成できるように、すべての特定の例外を最初にキャッチすることをお勧めします。ソフトウェアを機能させることができると本当に思っている場合は、その後いつでも Exception をキャッチできます。

この特定のケースでは、Connect で特定の例外をキャッチし、ホーム ビルドの CannotConnectException(originalException) をスローします。この例外は珍しいことではありませんが、通常のフローではなく、チェックされた例外に典型的です。

スケーラブルなことをしたい場合は、少なくとも代わりにデータベース接続プールであるApache DBCPを使用してください。

ほとんどの Java データベース関連アプリケーションで使用されていることを学びたい場合は、Hibernateまたは EJB3 (これも Hibernate によって行われます) に進みます。生の JDBC アプリケーションが実際に出回っていることはあまりありません。

于 2009-12-21T11:17:00.603 に答える