java模拟到C#SqlConnection和数据访问层(我的尝试)

时间:2009-12-21 10:54:59

标签: java data-access-layer sqlconnection

我正在尝试使用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();
            }
}

1 个答案:

答案 0 :(得分:1)

如果你想学习java JDBC,这很好。我不使用大写的方法名称(通常是C#,而不是java)并使用记录器(主要是log4j,但选择你喜欢的味道)而不是stdout和stderr。

捕捉异常是非常糟糕的做法;最好先捕获所有特定的异常,这样你就可以做出明智的错误信息。如果您真的认为可以使软件正常运行,那么您可以随时捕获异常。

在这种特殊情况下,我会在Connect中捕获特定的异常并抛出我的home build CannotConnectException(originalException)。此异常并不罕见,但也不是正常流程,通常用于检查异常。

如果你想做一些可扩展的事情,那么至少要使用Apache DBCP,而不是数据库连接池。

如果您想学习大多数Java数据库相关应用程序中使用的内容,请转到Hibernate或EJB3(也由Hibernate完成)。你真的不再在野外看到太多的原始JDBC应用程序了。