package usingjsp.Butik;
import usingjsp.Butik.*;
import java.sql.*;
/** A data object representing a bruger in the problem reporting
* system.
*/
public class bruger extends DBHandler
implements java.io.Serializable
{
public String varenr;
public double pris;
public String beskrivelse;
public int maengde;
public String bruger;
public String Brugernavn;
public String password;
public bruger()
{
}
public bruger(ResultSet results)
throws SQLException
{
Brugernavn = results.getString("Brugernavn");
Bruger = results.getString("Bruger");
Password = results.getString("Password");
Varenr = results.getString("Varenr");
Pris = results.getDouble("Pris");
Beskrivelse = results.getString("Beskrivelse");
Maengde = results.getInt("Maengde");
}
public String getBrugernavn() { return Brugernavn; }
public void setBrugernavn(String aBrugernavn)
{ Brugernavn= aBrugernavn; }
public String getbruger() { return bruger; }
public void setbruger(String abruger)
{ bruger = abruger; }
public String getPassword() { return password; }
public void setPassword(String aPassword)
{ password = aPassword; }
public String getVarenr(){return varenr;}
public void setVarenr(String aVarenr){ varenr = aVarenr;}
public double getpris(){return pris;}
public void setpris(double aPris){ pris = aPris ;}
public String getbeskrivelse(){return beskrivelse;}
public void setbeskrivelse( String aBeskrivelse){ beskrivelse = aBeskrivelse;}
public int getMaengde(){return maengde;}
public void setMaengde(int aMaengde){ maengde = aMaengde;}
public String getTableName() { return "bruger"; }
public DBHandler createInstance(ResultSet results)
throws SQLException
{
return new bruger(results);
}
public String getFieldList() { return "Brugernavn,Bruger,Password,Varenr,Pris,Beskrivelse,Maengde"; }
public String getInsertStatement()
{
return "insert into bruger (Brugernavn,Bruger,Password,Varenr,Pris,Beskrivelse,Maengde) "+
" values (?,?,?,?,?,?,?)";
}
public void prepareInsertStatement(PreparedStatement s)
throws SQLException
{
s.setString(1, Brugernavn);
s.setString(2, Bruger);
s.setString(3, Password);
s.setString(4, Varenr);
s.setString(5, Pris);
s.setString(6, Beskrivelse);
s.setString(7,Maengde );
}
public String getUpdateStatement()
{
return "update bruger set Brugernavn=?, Bruger=?,Varenr=?,Pris=?,Beskrivelse=?,Maengde=? "+
" where Password=?";
}
public void prepareUpdateStatement(PreparedStatement s)
throws SQLException
{
s.setString(1, Brugernavn);
s.setString(2, Bruger);
s.setString(3, Password);
s.setString(4, Varenr);
s.setString(5, Pris);
s.setString(6, Beskrivelse);
s.setString(7,Maengde );
}
public String getDeleteStatement()
{
return "delete from bruger where Brugernavn=?";
}
public void prepareDeleteStatement(PreparedStatement s)
throws SQLException
{
s.setString(1, Brugernavn);
}
}
package usingjsp.Butik;
import java.sql.*;
import java.util.*;
/** A base class for objects that map to database tables */
public abstract class DBHandler
{
public Vector getAll(Connection conn)
throws SQLException
{
return getAll(conn, null, null);
}
/*henter alle objekter der macher en bestemt Where**/
public Vector getAll(Connection conn, String whereClause)
throws SQLException
{
return getAll(conn, whereClause, null);
}
/** Henter alle objekterne i en tabel,som matcher en specifik where
og gør det muligt for kunden at specificere yderligere tabeler, der bliver bliver brugt i
where'en */
public Vector getAll(Connection conn, String whereClause,
String additionalTables)
throws SQLException
{
Statement s = null;
try
{
s = conn.createStatement();
Vector v = new Vector();
// byg query'en.Den basale query bliver "select <fields> from table"
String query = "select "+getFieldList()+" from "+getTableName();
// Tilføj yderligere tabeller, hvis der er brug for det
if (additionalTables != null)
{
query = query + "," + additionalTables;
}
// Tilføj where hvis der er brug for det
if (whereClause != null)
{
query = query + " where "+whereClause;
}
// udfør query
ResultSet results = s.executeQuery(query);
// lav en vector af resultaterne
while (results.next())
{
v.addElement(createInstance(results));
}
return v;
}
finally
{
if (s != null)
{
try { s.close(); } catch (Exception ignore) {}
}
}
}
/** Udfører en vilkårlig query string som skulle returnerer alle
* felterne i tabellen ligesom de andre querier. */
public Vector executeQuery(Connection conn, String query)
throws SQLException
{
Statement s = null;
try
{
s = conn.createStatement();
Vector v = new Vector();
// udfør query
ResultSet results = s.executeQuery(query);
// lav en vector af resultaterne
while (results.next())
{
v.addElement(createInstance(results));
}
return v;
}
finally
{
if (s != null)
{
try { s.close(); } catch (Exception ignore) {}
}
}
}
/** Indsæt et objekt i databasen */
public int insert(Connection conn)
throws SQLException
{
PreparedStatement s = null;
try
{
// Få dette objekt til at udføre dets eget insert funktion
s = conn.prepareStatement(getInsertStatement());
// Sæt dataværdier ind i insert funktionen
prepareInsertStatement(s);
// Udfør insert'en
return s.executeUpdate();
}
finally
{
if (s != null)
{
try { s.close(); } catch (Exception ignore) {}
}
}
}
// Returnerer en liste af felter i tabellen (bruges til select)
public abstract String getFieldList();
/** Returnerer en liste af felter i tabellen og i mens specificeres en
* tabel til feltnavnene,tabellen får et alias.feltnavne tilbage til det
* originale navn. For eksempel, kunden vil måske gerne spørge fra tabel A og
* tabel B, hver indeholde et felt F. hvis kunden skriver "select F from A,B ..." får
* kunden måske en fejl fordi F er flertydig. Kunden bliver nødt til at skrive
* "select A.F as F from A,B ...". Denne rutine tager den originale felt-
* liste og laver en liste af sådanne aliaser.
*/
public String getFieldList(String tableName)
{
// Lav en tokenizer til at analysere i gennem den originale liste
StringTokenizer fieldList = new StringTokenizer(
getFieldList(), ",");
// lav string bufferen til at holde resulterende liste
StringBuffer newList = new StringBuffer();
boolean first = true;
while (fieldList.hasMoreTokens())
{
String field = fieldList.nextToken();
if (!first) newList.append(',');
first = false;
newList.append(tableName);
newList.append('.');
newList.append(field);
newList.append(" as ");
newList.append(field);
}
return newList.toString();
}
/** Laver en insert funktion der bliver brugt i en PreparedStatement */
public abstract String getInsertStatement();
/** Gemmer dette objekt's data i PreparedStatement'en returneret af
* prepareInsertStatement. */
public abstract void prepareInsertStatement(PreparedStatement s)
throws SQLException;
/** opdaterer database rækken,som indeholder dette objekt */
public int update(Connection conn)
throws SQLException
{
PreparedStatement s = null;
try
{
s = conn.prepareStatement(getUpdateStatement());
prepareUpdateStatement(s);
return s.executeUpdate();
}
finally
{
if (s != null)
{
try { s.close(); } catch (Exception ignore) {}
}
}
}
public abstract String getUpdateStatement();
public abstract void prepareUpdateStatement(PreparedStatement s)
throws SQLException;
/** Fjerner dette objekt fra databasen */
public int delete(Connection conn)
throws SQLException
{
PreparedStatement s = null;
try
{
s = conn.prepareStatement(getDeleteStatement());
prepareDeleteStatement(s);
return s.executeUpdate();
}
finally
{
if (s != null)
{
try { s.close(); } catch (Exception ignore) {}
}
}
}
/** Returnerer sekvensnummeret, som bliver brugt til at indsætte dette objekt. Denne metode
* er meget database-afhægig. denne version er gearet hen imod
* mySQL databasen.
*/
public int getSequenceNumber(Connection conn)
throws SQLException
{
Statement s = null;
try
{
s = conn.createStatement();
ResultSet results = s.executeQuery(
"select last_insert_id()");
if (results.next())
{
return results.getInt(1);
}
else
{
throw new SQLException(
"Unable to generate sequence number");
}
}
finally
{
if (s != null)
{
try { s.close(); } catch (Exception ignore) {}
}
}
}
public abstract String getDeleteStatement();
public abstract void prepareDeleteStatement(PreparedStatement s)
throws SQLException;
public abstract String getTableName();
public abstract DBHandler createInstance(ResultSet results)
throws SQLException;
public String getSequenceGenerator() { return null; }
}
Nu prøver jeg så at få det her til at virke med en paradox database og jeg vil gerne have noget hjælp