Avatar billede axe2 Nybegynder
06. november 2002 - 21:02 Der er 16 kommentarer og
1 løsning

[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl,

[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, føglende fejl fås ved kørsel at denne program stump, kan ikke hitte ud af fejlen
System.out.println("fra writeDB");
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        } catch (ClassNotFoundException e) {
        }
        Connection con;
        Statement stmt;
        try {
            con = DriverManager.getConnection("jdbc:odbc:db4", "ole", "password");
            stmt = con.createStatement();
            for(int i = 0;i < cdcontainer.size();i++)  {
               
                Cd towrite = (Cd) cdcontainer.get(i);
                //træk data ud fra cd
                String cdtitle = towrite.getCdtitel();
                String cdartist = towrite.getCdartist();
                String cdgenre = towrite.getCdgenre();
                String booleanIsHome;
                if(towrite.isHome()) 
                booleanIsHome = "true";
                else
                booleanIsHome = "false";
                String laener;
                if(towrite.getLåner() == null)
                laener = "ingen laner";
                else
                laener  = towrite.getLåner().getNavn();
                String afleveringsfrist;
                if(towrite.isUdlånt()) 
                afleveringsfrist = towrite.getAfleveringsfrist().toString();
                else
                afleveringsfrist ="null";
                //skriv til databasen
               
                stmt.executeUpdate("INSERT INTO CD (CDTITLE,CDGENRE,CDARTIST," +
                                  "ISHOMEBOOLEAN,LANERNAVN,ALEVRINGSFRIST) " + 
                                  "VALUES (" + cdtitle + "," +
                                  cdartist + "," + cdgenre  + "," +
                                  booleanIsHome + "," + laener + "," +
                                  afleveringsfrist +")");
               
               
           

           
            }

        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }

    }
Avatar billede soreno Praktikant
06. november 2002 - 21:06 #1
en god hjælp er at få udskrevet et konkret eksempel på dit sql sætning, eks:
System.out.println("INSERT INTO CD (CDTITLE,CDGENRE,CDARTIST," +
                                  "ISHOMEBOOLEAN,LANERNAVN,ALEVRINGSFRIST) " +
                                  "VALUES (" + cdtitle + "," +
                                  cdartist + "," + cdgenre  + "," +
                                  booleanIsHome + "," + laener + "," +
                                  afleveringsfrist +")");

så er det meget nemmere at læse sql sætninger :-)

men uden at have kigget særligt meget på din sætning - så vil jeg tro det er fordi du har glemt '' omkring den tekst du vil indsætte i databasen (eks. 'tekt').
Avatar billede axe2 Nybegynder
06. november 2002 - 21:09 #2
det er jo tekst variable er det nødvendigt med 'omkring en variable'
Avatar billede soreno Praktikant
06. november 2002 - 21:11 #3
hvis det er tekst skal der '' omkring
hvis det er tal skal der ikke..
Avatar billede axe2 Nybegynder
06. november 2002 - 21:13 #4
ja men cdartist, f.eks og alle de andre variable er Strings iforvejen kan du præcisere det en smule, :)
Avatar billede axe2 Nybegynder
06. november 2002 - 21:14 #5
fik denne udskrift fra din System.out.println, kan være pga af null værdier at jeg får fejlen
Avatar billede axe2 Nybegynder
06. november 2002 - 21:15 #6
INSERT INTO CD (CDTITLE,CDGENRE,CDARTIST,ISHOMEBOOLEAN,LANERNAVN,ALEVRINGSFRIST) VALUES (cv,null,null,false,ingen laner,null)
Avatar billede soreno Praktikant
06. november 2002 - 21:15 #7
jow, hvis du giver et konkret eksempel på din sql sætning - f.eks. ved at poste output af den linie jeg skrev som det første.
alle de store bogstaver forvirrer mig.. ;-)
Avatar billede axe2 Nybegynder
06. november 2002 - 21:16 #8
den kom vist inden du nådede at kommentere
Avatar billede soreno Praktikant
06. november 2002 - 21:18 #9
prøv:
INSERT INTO CD (CDTITLE,CDGENRE,CDARTIST,ISHOMEBOOLEAN,LANERNAVN,ALEVRINGSFRIST) VALUES ('cv','null','null','false','ingen laner','null');

men, hvordan håndterer du null værdier på cdartist og cdgenre - skal de bare skrives som strengen "null" ?
Avatar billede axe2 Nybegynder
06. november 2002 - 21:20 #10
hmmm, ja den fejl har jeg først set nu, prøvede at sætte dem til en fast streng værdi f.eks "IUHUI" "jj" et eller andet, men fejlen er stadig den sammeI
Udskrift fra konsollen
NSERT INTO CD (CDTITLE,CDGENRE,CDARTIST,ISHOMEBOOLEAN,LANERNAVN,ALEVRINGSFRIST) VALUES (xxxxxx,J,IJ,false,ingen laner,null)
Stadig samme fejl
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "ingen laner".
Avatar billede soreno Praktikant
06. november 2002 - 21:22 #11
jamen, du har jo stadig ikke brugt '' !
Avatar billede axe2 Nybegynder
06. november 2002 - 21:22 #12
koden der skaber tabbellen, den virker så vidt jeg kan se tabbellerne bliver ihvertfald genereret
try {             
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        } catch (ClassNotFoundException e) {
        }
        Connection con;
        Statement stmt;

        String createTableCd =
            "CREATE TABLE CD "
                + "(CDTITLE VARCHAR(32),CDGENRE VARCHAR(32),CDARTIST VARCHAR(32)"
                + ",ISHOMEBOOLEAN VARCHAR(5),LANERNAVN VARCHAR(32)"
                + ",ALEVRINGSFRIST VARCHAR(32))";

        try {
            con = DriverManager.getConnection("jdbc:odbc:db4", "ole", "password");
            stmt = con.createStatement();
            stmt.executeUpdate(createTableCd);

        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }

    }
Avatar billede soreno Praktikant
06. november 2002 - 21:22 #13
INSERT INTO CD (CDTITLE,CDGENRE,CDARTIST,ISHOMEBOOLEAN,LANERNAVN,ALEVRINGSFRIST) VALUES ('xxxxxx','J','IJ','false','ingen laner','null');
Avatar billede axe2 Nybegynder
06. november 2002 - 21:23 #14
vis mig sku lige va jeg skal stille op er håbløs grøn på db, vil ha at jeg skal sætte mine variable ind i "cdtitel" f.eks
Avatar billede axe2 Nybegynder
06. november 2002 - 21:24 #15
tror at der ringer klokker, lav lige et svar
Avatar billede axe2 Nybegynder
06. november 2002 - 21:28 #16
soreno, så fattede jeg din pointe tak for 'svaret' lav lige en svarer, tak for hjælpen
Avatar billede soreno Praktikant
06. november 2002 - 21:28 #17
ding dong :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester