AGMedlem sedan mars 20001 266 inlägg Har ett problem som är delvis javabaserat.
Problemet ligger i grunden i att jag byter från utveckling, msaccess, till server, mysql. Dvs databas.
Då kan jag ej använda "Select * top x" utan "LIMIT".
Detta kräver då att på nåt ställe kommer koden ej fungera. Hade då någon fundering på ifall man kunda loopa igenom resultsettet, och på den vägen plocka ut tex de 10senaste.
Nåt förslag?
Andreas
Jag förstår inte??? Varför inte använda LIMIT??? Det har ju samma resultat som TOP...
Att hämta ett stort resultset och sedan loopa igenom det, är inte särskilt snyggt, eller prestandasnålt!
Använd: SELECT * FROM tabell_t LIMIT 0,10
Detta hämtar de senaste 10 posterna...
AGMedlem sedan mars 20001 266 inlägg Är att "limit" endast fungerar i mysql, och "top" i alla msprodukter, sen har oracle också något eget.
Andreas
LimeMedlem sedan sep. 2001961 inlägg Dålig design... ;-)
Vad du BORDE ha gjort var att implementera dina databasanrop enlig DAO-mönstret, d.v.s. gjort interface som man anropar från ditt program och som returnerar det du vill ha.
Exempel:
public interface ResultDAO {
public Vector getTopResult();
}
Sedan implementerar du klasser som ärver av detta interface. Olika klasser för olika databaser...
Ex.
public class ResultDAOMySQL implements ResultDAO {
/** Creates a new instance of ResultDAOMySQL */
public ResultDAOMySQL() {
}
public Vector getTopResult() {
//Databaskopplingar och sånt...
String query = "SELECT * FROM table LIMIT 0,10";
}
}
och
public class ResultDAOMSAccess implements ResultDAO {
/** Creates a new instance of ResultDAOMySQL */
public ResultDAOMySQL() {
}
public Vector getTopResult() {
//Databaskopplingar och sånt...
String query = "SELECT * top FROM table";
}
}
Sedan blir det liiite knepigare... Eftersom programmet inte vet vilken klass den egentligen ska använda sig av när du ber den skapa ett visst DAO och du vill ju kunna säga "new ResultDAO()" så får man koda lite till. Det man gör är att skapa en DAOFactory. Här finns det två metoder. Den ena är att göra en generell DAOFactory och en property-fil som talar om vilken klass som hör till vilket DAO-interface och den andra är att ha olika DAOFactories för olika implementeringar och tala om i en propertyfil vilken DAOFactory som skall användas. Jag föredrar den första.
Mer om DAO kan du läsa på http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html
Tar lite mera tid att göra första gången men när man väl har ett eget DAO-ramverk i sin kodbox så sparar man otroligt mycket tid på att slippa implementera om en massa när kunden/projektledaren får för sig att byta databas... för det får dom... alltid... ;-)
/Lime