Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    103

    MSAccess and java

    Salve,
    qualcuno ha mai usato MSAccess con java?
    Io ho un problema con i VARCHAR.

    Creo una tabella table con i campi (tag VARCHAR 40, mio VARCHAR 20) e quando cerco di inserire i valori nella tabella tramite la

    "insert into table values(tag, mio)"

    con mio e tag di tipo String

    il sistema non li vede come parametri e non esegue la query alzando l'eccezzione.
    Come posso fare?
    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Posta il codice. E' sufficiente il codice che esegue la query.
    Così com'è scritto non si capisce se c'è un errore di sintassi o di logica nell'uso delle variabili e i valori.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    103
    Qui riporto le due azioni (racchiuse negli opportuni try e catch);

    String azione = "CREATE TABLE "+data+"_nomi_"+progr+" (tag VARCHAR(40),nome VARCHAR(50))";
    ResultSet rs2 = dbase.Estrai(azione,scelta);

    questa è la seconda:

    String azione3="insert into "+data+"_nomi_"+progr+" values(".concat(tag+","+nome)+")";
    ResultSet rs2 = dbase.Estrai(azione3,scelta);


    questa è la procedura chiamata:

    public ResultSet Estrai(String azione, String cartella) {
    try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    // set this to a MS Access DB you have on your machine
    String filename = "c:/temp/prova/"+cartella+"/"+cartella+".mdb";
    String database = "jdbcdbcriver={Microsoft Access Driver (*.mdb)};DBQ=";
    database += filename.trim() + ";DriverID=22;READONLY=true}"; // add on to the end
    // now we can get the connection from the DriverManager
    Connection con = DriverManager.getConnection(database, "", "");
    Statement s = con.createStatement();
    //String sql ="insert into Posizioni values(".concat(obj)+","+x+","+y+")";
    s.execute(azione); // insert some data into the table
    ResultSet rs = s.getResultSet(); // get any ResultSet that came from our query
    return rs;
    }
    catch (Exception e) {
    e.printStackTrace();
    return null;
    }
    }

    Cosa ne pensate;

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    103
    Salve a tutti ho risolto il problema:
    basta indicare "....(tag, nome) values('"+tag+"','"+nome+"');
    Grazie a tutti

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    103
    Scusate mi è sorta un'altra domanda:
    come si fa a creare un campo autoincrementante con MSAccess in java?
    Che valore devo poi inserire nei values?
    Grazie

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    In teoria non devi inserire alcun valore nel campo autoincrementante.
    Si arrangia lui a mettercelo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    103
    Ti do ragione che non deve essere aggiunto nessun valore nel campo id se autoincrementante,
    ma con che istruzione creo questo campo?
    Cioè:
    String azione= "create table prova (....)";
    cosa ci metto al posto dei puntini!!
    Grazie

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Dentro le tonde, al posto dei puntini devi metterci tutti i nomi dei campi, con i tipi e gli eventuali vincoli.
    Esempio:
    codice:
    CREATE TABLE NomeTabella(
       Campo1 int not null autoincrement,
       Campo2 varchar(20),
       ...
    );
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.