मैं कहूंगा कि आपका कोड कई सबसे खराब प्रथाओं का एक उदाहरण है। मुझे तरीके गिनने दो:
- आपका कनेक्शन वर्ग एक खराब एब्स्ट्रैक्शन है जो java.sql.Connection के अलावा कुछ भी नहीं देता है।
- यदि आप अपनी कक्षा का उपयोग करते हैं, तो आप कभी भी कनेक्शन पूलिंग का लाभ नहीं उठा पाएंगे।
- आप अपने ड्राइवर वर्ग, अपने कनेक्शन URL आदि को हार्ड वायर करते हैं। आप इसे संपादित और पुन:संकलित किए बिना नहीं बदल सकते। एक बेहतर उपाय यह होगा कि ऐसी चीजों को बाहरी बनाया जाए।
- कैच ब्लॉक में त्रुटि संदेश प्रिंट करना संपूर्ण स्टैक ट्रेस की आपूर्ति की तुलना में बहुत कम जानकारी है।
- आपके कोड से मेरी आंखों में दर्द होता है। यह सन जावा कोडिंग मानकों का पालन नहीं करता है।
- आपका
retrieveData
तरीका बिल्कुल बेकार है। आप उन सभी मुद्रित बयानों का क्या करेंगे? क्या उन्हें डेटा संरचना या ऑब्जेक्ट में लोड करना बेहतर नहीं होगा ताकि आपका शेष कोड उस जानकारी का उपयोग कर सके? - यह
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;
}
}