Connectie Database geeft 'General Error'

Status
Niet open voor verdere reacties.

Bakelsevv

Gebruiker
Lid geworden
22 nov 2007
Berichten
49
Zoals de titel het al zegt, probeer ik iets op te slaan in een database. Maar telkens als wij het proberen (wat in onze optiek goed is) geeft het de zin 'General Error' terug. Helaas omdat wij denken dat het goed is kunnen wij het probleem niet vinden. Hierbij dus de klasse en hopelijk zou iemand ons kunnen helpen! Het probleem zit dus bij de SAVE methode.

Code:
package puzzel.persistentie;

import java.util.logging.Level;
import java.util.logging.Logger;
import puzzel.domein.Puzzel;
import puzzel.domein.Woord;
import java.sql.*;
import java.util.*;


public class PuzzelDatabase {

	private String	url;
	private String	drivers;
	private String	username;
	private String	password;
        private Connection con;

	public PuzzelDatabase(String url, String drivers, String username,
			String password)
        {
            System.setProperty("jdbc.drivers", "sun.jdbc.odbc.JdbcOdbcDriver");
            this.url = "jdbc:odbc:dbsPuzzel";
            try
            {
                con = DriverManager.getConnection(this.url, username, password);
                System.out.println("Er is een connectie");
            }
            catch (Exception ex)
            {
                System.out.println("Er is iets fout gegaan bij de connectie");
                System.out.println(ex.getMessage());
            }
	}

	public boolean save(Puzzel p) {
            try 
            {
                System.out.println("1");
                Statement stat = con.createStatement();
                System.out.println("2");
                String query2 = "INSERT into puzzel values("+p.getNr()+", "+p.getAantalRijen()+", "+p.getAantalKolommen()+");";
                //String query2 = "INSERT INTO puzzel (nummer, rijen, kolommen) VALUES ("+p.getNr()+", "+p.getAantalRijen()+", "+p.getAantalKolommen()+");";
                System.out.println("3");
                //stat.execute(query);
                System.out.println(query2);
          // !! hier gaat het fout:
                //stat.execute(query2);
                stat.executeUpdate(query2);
                System.out.println(query2);
                Iterator<Woord> hw= p.getHorizontaleWoorden();
                while (hw.hasNext())
                {
                    Woord w= hw.next();
                    String querytwee = "INSERT into woorden values("+p.getNr()+", "+w.getTekst()+", "+w.getBeginrij()+", "+w.getBeginkolom()+", 'h');";
                    System.out.println(querytwee);
                    stat.execute(querytwee);
                    System.out.println(querytwee);
                }
                Iterator<Woord> vw= p.getVertikaleWoorden();
                while (vw.hasNext())
                {
                    Woord w= vw.next();
                    String querytwee = "INSERT INTO woorden values("+p.getNr()+", '"+w.getTekst()+"', "+w.getBeginrij()+", "+w.getBeginkolom()+", 'v');";
                    stat.execute(querytwee);
                    System.out.println(querytwee);
                }

                con.close();

            }
            catch (SQLException e)
            {
                System.out.println(e.getMessage());
		return false;
            }
            catch (Exception e)
            {
                System.out.println(e.getMessage());
            }
            
            return true;
	}

	public Puzzel load(int nr)
        {
            Puzzel p;
            int aantalR=0, aantalK =0;
            try
            {
                // puzzel maken
                Statement stat = con.createStatement();
                String query = "SELECT * FROM puzzel WHERE nummer = "+nr+";";
                System.out.println(query);
                ResultSet rs = stat.executeQuery(query);
                while (rs.next())
                {
                   aantalR = rs.getInt("rijen");
                   aantalK = rs.getInt("kolommen");
                }
                p = new Puzzel(nr, aantalR, aantalK);

                //horizontale woorden toevoegen
                query = "SELECT * FROM woorden WHERE nummer = "+nr+" AND type='h';";
                System.out.println(query);
                rs = stat.executeQuery(query);
                while (rs.next())
                {
                    String woord = rs.getString("woord");
                    String omschr = "panda";
                    int startkolom = rs.getInt("startkolom");
                    int startrij = rs.getInt("startrij");
                    Woord w = new Woord(woord, omschr, startkolom, startrij);
                    p.addHorizontaalWoord(w);
                }
                //verticale woorden toevoegen
                query = "SELECT * FROM woorden WHERE nummer = "+nr+" AND type='v';";
                System.out.println(query);
                rs = stat.executeQuery(query);
                while (rs.next())
                {
                    Woord w = new Woord(rs.getString("woord"), "", rs.getInt("startkolom"), rs.getInt("startrij"));
                    p.addVertikaalWoord(w);
                }
                con.close();
                return p;
            }
            catch (SQLException ex)
            {
            }
            return new Puzzel(0, 0, 0);
        }

	public int getMaxPuzzelnr()
        {
            try
            {
                //todo
                Statement stat = con.createStatement();
                String query = "SELECT max(nummer) as nrm FROM puzzel";
                System.out.println(query);
                ResultSet rs = stat.executeQuery(query);
                while (rs.next())
                {
                   return  rs.getInt("nrm");
                }

            }
            catch (SQLException ex) {

            }
            return -1;
	}

}

Het gaat dus om de SAVE methode.

Alvast Bedankt!

Met vriendelijke groet,
Bakelsevv
 
ik ken de manier waarop jullie de jdbc driver zetten niet maar ik heb het volgende gedaan en dat werkt
Code:
public class PuzzelDataBase {

	public static void main(String[] args) {
		try {
			new PuzzelDataBase().save(new Puzzel());
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	private String	url;

    private Connection con;

	public PuzzelDataBase()
        {
            this.url = "jdbc:mysql://127.0.0.1/puzzeldata";
            try
            {
            	Class.forName("org.gjt.mm.mysql.Driver");
                con = DriverManager.getConnection(this.url, "root", "password");
                System.out.println("Er is een connectie");
            }
            catch (Exception ex)
            {
                System.out.println("Er is iets fout gegaan bij de connectie");
                System.out.println(ex.getMessage());
            }
	}

	public boolean save(Puzzel p) throws SQLException {
            try
            {
                Statement stat = con.createStatement();
                String query2 = "INSERT into puzzel values("+p.getNr()+", "+p.getAantalRijen()+", "+p.getAantalKolommen()+");";
                stat.executeUpdate(query2);

            }
            catch (SQLException e)
            {
                System.out.println(e.getMessage());
                return false;
            }
            catch (Exception e)
            {
                System.out.println(e.getMessage());
            } finally {
            	con.close();
            }

            return true;
	}

}

ik maak gebruik van mysql-connector-java-5.1.6-bin.jar omdat ik deze altijd gebruik maar dat zou in feite geen verschil mogen maken
 
Laatst bewerkt:
Het probleem is opgelost. Ik heb momenteel het juiste antwoord niet op deze laptop, maar de fout zat in de query we gaven een int mee terwijl het een string zou moeten zijn.

Dus het topic kan worden gesloten
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan