Toon posts:

[JAVA / Ms Access] Datatypes in Jbuilder

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb met jbuilder een applicatie gemaakt die orders kan toevoegen voor een virtueel bedrijf voor school. Probleem is dat de datatype niet allemaal text zijn en jbuilder het niet leuk vind als jij bij een ander soort datatype getText gaat gebruiken. Moet ik voor ander soort datatype dan tekst ook andere componenten gebruiken van jbuilder of is het iets puur in de code?
JBuilder intereseert het geen ene donder: Hij geeft alleen maar aan dat de java het eventueel geen valide java code zou vinden. Echter, onderstaande code is dat waarschijnlijk wel (ik heb geen idee of naam geïnitialiseerd is en correct bereikbaar is als Connection object) en gaat volgens mij alleen niet doen wat jij wilt.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 void jButton1_actionPerformed(ActionEvent e) {
  try {
  String naam1 = jTextField1.getText();
  String adres1 = jTextField2.getText();
  String datum1 = jTextField3.getText();
  Statement statement = naam.createStatement();
  String query="INSERT INTO naam (naam, adres, datum) 
VALUES ('"+naam1+"','"+adres1+"','"+datum1+"')";
  statement.executeUpdate(query);
  }
  catch (SQLException sqlex) {
   sqlex.printStackTrace();
 }
}
Hier is de code weer :+
Ik heb even een simpele applicatie gemaakt om dit uit te testen en daarom is mijn vraag onstaan. In deze code zie je dat datum als gettext is omschreven maar dit werkt dus niet omdat het in MS ACCESS als datatype datum/tijd is omschreven.
1) In je textfields staat 100% alleen een string. Niets meer, niets minder. Je moet dus niet denken dat java de string in een textfield als datum ziet, alleen omdat jij het als datum noteert
2) Een SQL-Query is een string. Wederom niets meer en niets minder. Je mag dus van java probleemloos een string maken en op de database afvuren dmv executeUpdate()

Tot zover dus geen probleem met je code. De vraag is dus: wat is de foutmelding. Wat gaat er mis, immers met 'hij vindt het niet leuk' zie ik niet wat er aan de hand is.
Mijn gok is trouwens dat access klaagt over je datatypes (ipv jbuilder en java :+ ) en hij vindt dat je je datum niet goed geformateerd hebt (access requires # # om een datum heen naar ik dacht )

OMG wat lomp! Ik heb op edit gedrukt ipv op quote en daardoor is je bericht verloren gegaan :( Sorry, maar ik kan het ook niet meer terugvinden in m'n cache. En de code van je had ik al geknipt :(
Sorry :(

[ Voor 85% gewijzigd door Verwijderd op 14-01-2004 00:37 ]


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Je moet het casten naar java.sql.Date

Gebruik BTW geparametriseerde queries. Tenzij je quote-bugs en code injection wil ;)
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        PreparedStatement ps;
        int result;
        String qstr;

        try {
            qstr = "INSERT INTO tblLocatie (locNaam, locStraat, locNummer, locPostcode, locPlaats, locOmschrijving) " +
                "VALUES (?, ?, ?, ?, ?, ?)";
            ps = HintsDatabase.getConnection().prepareStatement(qstr);
            ps.setString(1, l.getNaam());
            ps.setString(2, l.getStraat());
            ps.setString(3, l.getHuisnummer());
            ps.setString(4, l.getPostcode());
            ps.setString(5, l.getPlaats());
            ps.setString(6, l.getOmschrijving());
            result = ps.executeUpdate();
        } catch (SQLException e) {
            System.err.println("Insert locatie: " + e.getMessage());
            return false;
        }

Of zoiets B)

[ Voor 7% gewijzigd door kenneth op 13-01-2004 21:55 ]

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Verwijderd

Topicstarter
Ik denk dat je nog niet helemaal snapt wat ik bedoel; Het gaat niet alleen over date/time maar ook over andere datatypes. Ik vroeg me af wat voor opties daar in jbuilder zitten om hiermee om te gaan :D Maar thanx voor je reactie _/-\o_

edit:

Inmiddels ben ik erachter dat het binnen Jbuilder anders word aangegeven als in ACCESS. Bijvoorbeeld als Boolean of Timestamp en Int. Nu moet ik alleen nog de goede code weten :P

[ Voor 41% gewijzigd door Verwijderd op 14-01-2004 00:07 ]


Verwijderd

Topicstarter
Tot zover dus geen probleem met je code. De vraag is dus: wat is de foutmelding. Wat gaat er mis, immers met 'hij vindt het niet leuk' zie ik niet wat er aan de hand is.
Mijn gok is trouwens dat access klaagt over je datatypes (ipv jbuilder en java :+ ) en hij vindt dat je je datum niet goed geformateerd hebt (access requires # # om een datum heen naar ik dacht )
De foutmelding:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access-stuurprogramma] Gegevenstypen komen niet overeen in criteriumexpressie.

Ik denk nog steeds dat ik i.p.v. string bij textfield3 (zie code) timestamp moet gebruiken want dan klaagt access niet meer.. ik weet alleen niet precies hoe ik dit in de code moet zetten. Verder zal ik er dan voor moeten zorgen dat de opmaak in dit textfield in een stijl gebeurd dus bijvoorbeeld 24-mrt-2004

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Verwijderd schreef op 14 januari 2004 @ 00:42:
Ik denk nog steeds dat ik i.p.v. string bij textfield3 (zie code) timestamp moet gebruiken want dan klaagt access niet meer.. ik weet alleen niet precies hoe ik dit in de code moet zetten. Verder zal ik er dan voor moeten zorgen dat de opmaak in dit textfield in een stijl gebeurd dus bijvoorbeeld 24-mrt-2004
Kijk nou even in de handleiding van Access:
Between
#02-2-93# And #12-1-93#
Datums van 2-feb-93 tot en met 1-dec-93
Je moet dus # # om je datum heen zetten. Verder is nog het een en ander afhankelijk van de regional setting van je PC, dus check dat even.

Verwijderd

Topicstarter
Je moet dus # # om je datum heen zetten. Verder is nog het een en ander afhankelijk van de regional setting van je PC, dus check dat even.
ik snap niet echt wat je bedoelt.... hekjes om mijn datum zetten :?
Ik wil ervoor kunnen zorgen dat als ik een order toevoeg dat ik daar de datum bij kan invoegen. Dit was niet gelukt in de applicatie die ik had gemaakt dus heb ik een hele simpele applicatie met een snel in elkaar gezette database met een tabel en drie kolommen gemaakt zoals je in de code gedeeltelijk kunt zien. Maar omdat de code van de datum kolom niet klopt vroeg ik wat de goede code is zodat als ik de gegevens in de database wil toevoegen dit ook echt gebeurd.

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 27-05 21:44

Robtimus

me Robtimus no like you

Misschien een idee om met java.util.Calendar, java.util.GregorianCalendar en java.util.Date te werken? Je kan de datum dan opslaan in een long, die je krijgt uit de (Gregorian)Calendar.getTimeInMillis() en die je kan zetten met (Gregorian)Calendar.setTimeInMillis(long). Dag vd maand, maand en jaar krijg je met de (Gregorian)Calendar.get(int) method.

Je moet dan wel je database aanpassen om de datum als long te verwerken.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • mcB
  • Registratie: Mei 2002
  • Laatst online: 15-05 09:27

mcB

Ligt het niet aan het feit dat er single quotes om de datum heen staan??

Doe es een Sytem out met je SQL query.
Copy paste 'm ff in access

[ Voor 33% gewijzigd door mcB op 14-01-2004 11:10 ]

Strix (Skullflame)


Verwijderd

Topicstarter
IceManX schreef op 14 januari 2004 @ 10:52:
Misschien een idee om met java.util.Calendar, java.util.GregorianCalendar en java.util.Date te werken? Je kan de datum dan opslaan in een long, die je krijgt uit de (Gregorian)Calendar.getTimeInMillis() en die je kan zetten met (Gregorian)Calendar.setTimeInMillis(long). Dag vd maand, maand en jaar krijg je met de (Gregorian)Calendar.get(int) method.

Je moet dan wel je database aanpassen om de datum als long te verwerken.
De database mag niet aangepast worden anders had ik dat allang gedaan :)
mcB schreef op 14 januari 2004 @ 11:09:
Ligt het niet aan het feit dat er single quotes om de datum heen staan??

Doe es een Sytem out met je SQL query.
Copy paste 'm ff in access
Ik ben een beginner met Jbuilder en MS ACCESS, je hulp is goed bedoeld nee ik aan maar hier schiet ik weinig mee op :+

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Java:
1
2
3
4
String l_insertQuery = "INSERT INTO naam (naam, adres, datum) " +
                       "VALUES ( '" + naam1  + "', '" +
                                    + adres1  + "', #" +
                                    + datum1 + "# )";

Zo, gewoon je # eromheen plakken ipv quotes
BTW: Tabel naam en veld naam? Waarom zo idioot verwarrend?

[ Voor 46% gewijzigd door Glimi op 14-01-2004 14:39 ]


Verwijderd

Topicstarter
Glimi schreef op 14 januari 2004 @ 14:33:
Java:
1
2
3
4
String l_insertQuery = "INSERT INTO naam (naam, adres, datum) " +
                       "VALUES ( '" + naam1  + "', '" +
                                    + adres1  + "', #" +
                                    + datum1 + "# )";

Zo, gewoon je # eromheen plakken ipv quotes
BTW: Tabel naam en veld naam? Waarom zo idioot verwarrend?
Dit werkt alleen je moet wel zorgen dat je precies de datum schrijft mm-dd-jaar anders komt er een fout melding. En btw: Ik heb dit ff snel in elkaar gezet om te testen voor mijn echte applicatie dus daarom is de naamgeving niet zo slim maar dat maakt niet uit :D

Nu is mijn vraag hoe zit het dan met andere soort data typen behalve text en time/date. Hoe zit het dan met een currency of een yes/no? Iemand misschien een linkje?

[ Voor 30% gewijzigd door Verwijderd op 14-01-2004 16:23 ]


Verwijderd

Topicstarter
Ik weet dat ik geen topics naar boven mag schoppen maar ik heb echt een antwoord nodig op mijn vraag in de vorige post dus schop ik mijn topic toch omhoog }) Ik heb nu 2 dagen gezocht op internet en in help functies maar heb geen antwoord kunnen vinden op mijn vraag in bovenstaande post. Ik hoop dat iemand mij hier bij kan helpen :Y)
Pagina: 1