Just nu i M3-nätverket
Gå till innehåll

java.sql.SQLException


javanybörjare

Rekommendera Poster

javanybörjare

Hej!

 

 

 

 

Jag håller på med en övning där jag ska lägg en ny rad i en tabell som heter ANSTALLD

 

och det går förstås inte bra och jag får nedan felmeddelande efter att jag kör aplikationen

 

java.sql.SQLException: At least one parameter to the current statement is uninitialized.

 

Jag har en klass som heter SimpleActionController och ser ut som nedan:

 

public class SimpleActionController extends AbstractController {

private static final String HARD_KODAD_AVDELNINGS_KOD = "Java";

private static final String LAGG_TILL_MEDDELANDE_OK = "Anställd är sparad ";

 

/**

* Skapar en anstalld avdelning 'Java' (hårdkodat här...)

* @param anstallningsNummer

* @param anstallningsNamn

* @param epost

* @param telefon

* @return

*/

public String addAnstalld(String anstallningsNummer, String anstallningsNamn, String epost, String telefon) {

System.out.println(getClass().getSimpleName() + ".addAnstlld() är anropad");

 

// 1 Skapa en instans (ett objekt) av typen Anstalld

Anstalld nyAnstalld = new Anstalld();

nyAnstalld.setAnstallningsNamn(anstallningsNamn);

nyAnstalld.setAnstallningsNummer(anstallningsNummer);

nyAnstalld.setTelefon(telefon);

nyAnstalld.setEpost(epost);

 

//????

// nyanstalld.setUpdTid(updTid);

 

 

// 2 - Anropa JDBCTestDAO och skapa/skriv av metoden "laggTill()"

// obs! Avdelningskoden är hårdkodad, använd: HARD_KODAD_AVDELNINGS_KOD

 

JDBCTestDAO dao = new JDBCTestDAO();

int resultat = 0;

resultat = dao.laggTill(nyAnstalld,HARD_KODAD_AVDELNINGS_KOD );

 

 

// 3 - Returnera ett svar av typen String om det gick bra eller dåligt

if (resultat == 0){

System.out.println("Det gick ej att lägga upp ny rad i tabellen ANSTALLD!");

}

else{

System.out.println("Antal uppdaterade rader = " + resultat);

}

return "Det gick inte bra att lägga upp raden i tabellen ANSTALLD!";

}

 

 

och en anna klass som heter  JDBCTestDAO och ser ut:

 

 

public class JDBCTestDAO {

 

private static final String SQL_INSERT = "INSERT INTO APP.ANSTALLD (ANST_NR, ANST_NAMN, TELEFON, EPOST, AVD_KOD) VALUES(?,?,?,?,?)";

 

private static DataSource ds = null;

 

int antalUppdateradeRader = 0;

 

public int laggTill(Anstalld anstalld, String avdelningsKod){

 

Connection connection = null;

PreparedStatement stmt = null;

 

try

{

connection = this.getDataSource().getConnection();

stmt = connection.prepareStatement(SQL_INSERT);

stmt.setString(1, anstalld.getAnstallningsNummer());

stmt.setString(2, anstalld.getAnstallningsNamn());

stmt.setString(3, anstalld.getTelefon());

stmt.setString(4, anstalld.getEpost());

 

antalUppdateradeRader = stmt.executeUpdate();

 

 

} catch (SQLException e) {

e.printStackTrace();

} finally {

 

if (stmt != null) {

try {

stmt.close();

stmt = null;

} catch (SQLException e) {

e.printStackTrace();

}

}

if (connection != null) {

try {

connection.close();

connection = null;

System.out.println("Connected successfully.");

} catch (SQLException e) {

e.printStackTrace();

}

}

}

return antalUppdateradeRader;

}

 

 

kan någon tala om för mig vad jag gjort för fel! vad jag saknar? vilken parameter felmeddelandet hänvisar till?

 

ja, jag vore jätte tacksam för Ditt svar!

 

/javaNybörjare

Länk till kommentar
Dela på andra webbplatser

  • 2 veckor senare...

Nu har du glömt posta klassen Anstalld men en gissning är att felet ligger i någon av dessa rader:

stmt = connection.prepareStatement(SQL_INSERT);

stmt.setString(1, anstalld.getAnstallningsNummer());

stmt.setString(2, anstalld.getAnstallningsNamn());

stmt.setString(3, anstalld.getTelefon());

stmt.setString(4, anstalld.getEpost());
Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...