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

java.sql.SQLException

Rekommendera Poster

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

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

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());

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×