Java新手需要数据库连接方面的帮助

Java新手需要数据库连接方面的帮助,第1张

Java新手需要数据库连接方面的帮助

我想说您的代码是许多最差做法的示例。让我来计算一下:

  1. 您的Connection类是一个糟糕的抽象,没有提供超过java.sql.Connection的任何东西。
  2. 如果使用您的课程,您将永远无法利用连接池。
  3. 您需要硬连接驱动程序类,连接URL等。如果不进行编辑和重新编译,就无法更改它。更好的解决方案是将这些事情外部化。
  4. 与提供整个堆栈跟踪信息相比,在catch块中打印错误消息要少得多。
  5. 您的代码伤害了我的眼睛。它不遵循Sun Java编码标准。
  6. 您的
    retrieveData
    方法完全毫无价值。您将如何处理所有这些印刷报表?将它们加载到数据结构或对象中是否更好,以便您的其余代码可以使用该信息?
  7. 它是
    rowsAffected
    -“影响”是动词,“效果”是名词。另一个变量没有任何用处。

你走错了路。重新考虑一下。

我认为您会发现此代码更有用。

package persistence;import java.sql.*;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class DatabaseUtils{    public static Connection createConnection(String driver, String url, String username, String password) throws ClassNotFoundException, SQLException    {        Class.forName(driver);        if ((username == null) || (password == null) || (username.trim().length() == 0) || (password.trim().length() == 0))        { return DriverManager.getConnection(url);        }        else        { return DriverManager.getConnection(url, username, password);        }    }    public static void close(Connection connection)    {        try        { if (connection != null) {     connection.close(); }        }        catch (SQLException e)        { e.printStackTrace();        }    }    public static void close(Statement st)    {        try        { if (st != null) {     st.close(); }        }        catch (SQLException e)        { e.printStackTrace();        }    }    public static void close(ResultSet rs)    {        try        { if (rs != null) {     rs.close(); }        }        catch (SQLException e)        { e.printStackTrace();        }    }    public static void rollback(Connection connection)    {        try        { if (connection != null) {     connection.rollback(); }        }        catch (SQLException e)        { e.printStackTrace();        }    }    public static List<Map<String, Object>> map(ResultSet rs) throws SQLException    {        List<Map<String, Object>> results = new ArrayList<Map<String, Object>>();        try        { if (rs != null) {     ResultSetmetaData meta = rs.getmetaData();     int numColumns = meta.getColumnCount();     while (rs.next())     {         Map<String, Object> row = new HashMap<String, Object>();         for (int i = 1; i <= numColumns; ++i)         {  String name = meta.getColumnName(i);  Object value = rs.getObject(i);  row.put(name, value);         }         results.add(row);     } }        }        finally        { close(rs);        }        return results;    }}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5507070.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存