Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Inserire tipo date in sccess db

    Ragazzi, buongiorno a tutti, scusate ma ancora ho bisogno di voi...
    Allora no ci riesco in nessun modo a fare una query SQL relativa ad insert se c'è il tipo date, non lo so come inserire la data in database access, ho già provato a navigare un pò su google ed ho trovato che bisogna inserire la data con #, o provato ma non funziona.... Come faccio ad eseguire questa query: INSERT INTO TableName (DataOggi) VALUES(#2016-01-03 09:04:55#)
    Attributo DataOggi nel db è del tipo DATETIME
    Grazie per l'aiuto)
    Ultima modifica di TotalNoob; 10-01-2016 a 09:05

  2. #2
    Che sistema operativo stai usando?
    Penso Windows 7, no?

    Ciao.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    La soluzione è sempre la stessa: usare le PreparedStatements.
    Fai una ricerca sia sul forum, che sul web. Troverai centinaia di discussioni in merito.

    Quando si hanno dei dati da passare ad una istruzione SQL si devono usare le PreparedStatements.
    MAI scrivere i dati direttamente nell'istruzione SQL.
    MAI scrivere i dati in variabili da concatenare nelle istruzioni SQL.

    La tua domanda: come faccio ad eseguire una query di quel tipo?

    Risposta, così:

    codice:
    // Costruisco un parser per le date nel formato che mi interessa (ho usato il tuo esempio)
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
    // Ottengo un oggetto Date dalla tua stringa
    Date d = sdf.parse("2016-01-03 09:04:55");
    
    // Costruisco il PreparedStatement per l'inserimento
    // Nota, al posto del valore metto un segnaposto "?"
    String sql = "INSERT INTO TableName (DataOggi) VALUES( ? )";
    PreparedStatement pstmt = con.prepareStatement( sql );
    
    // Nota, la posizione di ciascun segnaposto è l'indice del parametro (1 based)
    pstmt.setDate(1, new java.sql.Date(d.getTime()));
    
    // Eseguo l'insert
    pstmt.executeUpdate();

    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

  4. #4
    Utente di HTML.it L'avatar di ilGuglia
    Registrato dal
    Dec 2015
    residenza
    Sicilia
    Messaggi
    46
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    (...)
    Quando si hanno dei dati da passare ad una istruzione SQL si devono usare le PreparedStatements.
    MAI scrivere i dati direttamente nell'istruzione SQL.
    MAI scrivere i dati in variabili da concatenare nelle istruzioni SQL.

    (...)
    Perché addirittura "MAI"?

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Perchè una buona abitudine risparmia molti grattacapi.
    Ah, dimenticavo... visto che stai lavorando con Access, prenditi del tempo anche per leggere questa pillolina.

    Ciao.
    Ultima modifica di LeleFT; 11-01-2016 a 13:42
    "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

Tag per questa discussione

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.