Ich erhalte die folgende execption wenn SQL-Anweisungen ausführenData Access Object-Klasse SQLServerException bekommen
SQLServerException: Der Server hat die Transaktion fortzusetzen fehlgeschlagen. Beschreibung: 69d00000016.
Ich weiß, dass die folgende DAO-Implementierung nicht korrekt ist. Ich möchte wissen, was die richtige Implementierung für den folgenden Code ist und ob die Tatsache, dass meine ConnFactory als statisch deklariert ist, den obigen Fehler verursachen kann.
private static DbConnectionFactory connFactory;
protected myDAO() {
myDAO.connFactory = DbConnectionFactoryHome.getHome().lookupFactory("facName");
}
public myReturn myAccessMethod(final int cod) throws BaseException {
Connection conn = null;
CallableStatement stmt = null;
ResultSet resSet = null;
myReturn ret= null;
try {
conn = myDAO.connFactory.getConnection();
stmt = conn.prepareCall("{call name (2)}");
stmt.setInt(1, cod);
resSet = stmt.executeQuery();
if (resSet.next()) {
ret = new myReturn(resSet.getInt("someValue"));
}
}
catch (SQLException sqle) {
throw new myException(sqle.getMessage(), (Throwable)sqle);
}
finally {
try {
if (resSet != null) {
resSet.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
}
}
return ret;
}
Soll ich den statischen Modifikator aus der connFactory entfernen oder einen Singleton implementieren, so dass, wenn der Konstruktor erneut aufgerufen wird das Werk neu erstellt wird nicht?
ich verstanden, dass ich alle Ergebnisse zu verarbeiten, bevor eine weitere Erklärung in der anruf gleiche Verbindung, aber in diesem Fall kann nur eine Anweisung in derselben Verbindung aufgerufen werden. – dinhokz
Können Sie mehr von Ihrem Stack-Trace veröffentlichen, wenn Sie den Fehler erhalten? – Brod