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,这很好。我不会使用大写的方法名称(通常是 C#,而不是 java),而是使用记录器(主要是 log4j,但选择你最喜欢的风格)而不是 stdout 和 stderr。

捕捉异常是非常糟糕的做法;最好先捕获所有特定异常,以便您可以发出合理的错误消息。如果你真的认为你可以让你的软件运行,你总是可以在那之后捕获异常。

在这种特殊情况下,我会在 Connect 中捕获特定异常并抛出我的家庭构建CannotConnectException(originalException)。这种异常并不少见,但也不是正常的流程,典型的受检异常。

如果你想做一些可扩展的事情,那么至少使用Apache DBCP,一个数据库连接池来代替。

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

于 2009-12-21T11:17:00.603 回答