Java/oracle

infkb Messages postés 46 Date d'inscription mercredi 10 août 2005 Statut Membre Dernière intervention 18 janvier 2011 - 21 sept. 2005 à 20:26
cs_lamane Messages postés 20 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 1 avril 2007 - 2 oct. 2005 à 12:57
Salut,
Je fais une petite application dont j'insère les données dans une base de données Oracle , j'insert dans une table appelé Dep dont le format de la date est: 'dd/mm/yy' la table est constituée de 2 champs la clé est number puis la date
create table Dep (Num VARCHAR2(10) primary key,
Datm date NOT NULL);
Puis je transforme la date dans le programme mais ç me donne le resultat suivant: Pb d execution de la requete.
voici le programme:

import java.util.*;
import java.sql.Date ;
import java.text.DateFormat;
import java.util.Locale;
import java.sql.*;
import java.sql.Date ;
class date {

public static void main(String[] args)throws Exception{
int nbe;
Connection c=null;
ResultSet r=null;
ResultSet req=null;
Locale locale = Locale.getDefault();
// Création de la date
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, locale);
java.util.Date dt2 = dateFormat.parse("11/06/82");
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Class.forName("oracle.jdbc.driver.OracleDriver");
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
}catch(SQLException e){System.out.println("Classe not Found");}
catch( ClassNotFoundException e){
System.exit(0);
}

try{
c=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:bdagenda","bk","kaouthar");
}catch(SQLException e){}

System.out.println("Insertion d un nouvel enregistrement");
try {

Statement s = c.createStatement();
nbe=s.executeUpdate("insert into Dep values('Dep2',dt2)");
System.out.println("Nombre d enregistrements mis a jour est "+nbe);
}catch(SQLException e) {System.out.println("Pb d execution de la requete");
}

try {
Statement s1 = c.createStatement();
r =s1.executeQuery("select * from Dep");
}catch(SQLException e) {}
//Parcours des enregistements
try {
ResultSetMetaData n=r.getMetaData();
int nbcol=n.getColumnCount();
boolean trouve=r.next();
while (trouve){
for(int i=1;i<=nbcol;i++)
{
System.out.print(r.getString(i)+"");
System.out.println();
}
trouve=r.next();
}
r.close();
}catch(SQLException e){}
}
}

3 réponses

gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
21 sept. 2005 à 22:11
En SQL, le format des dates est tjs "aaaa-mm-jj" il me semble. Ça doit donc venir de là.


A verifier....


gmi19oj19
0
cs_Chris2001 Messages postés 8 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 22 septembre 2005
22 sept. 2005 à 11:25
Voici un morceau de code que je te propose



java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd/MM/yyyy");

java.util.Date deptDate = sdf.parse("11/06/82");

String deptNo = "Dept1";

java.sql.Connection connection = null;


java.sql.Statement statement = null;



try {

Class.forName("oracle.jdbc.driver.OracleDriver");

connection = java.sql.DriverManager.getConnection(url, login, password);

String strSQL = "INSERT INTO Dep " +

"(Num, Datm) " +

"VALUES " +

('" + deptNo + "', TO_DATE('" + sdf.format(deptNo + "', 'DD/MM/YYYY'))";

statement = connection.createStatement();

int rows = statement.executeUpdate(strSQL);

} catch(Exception e) {

e.printStackTrace();

} finally {


try {

if (statement != null) statement.close();

} catch (SQLException sqle) {

}


try {

if (connection != null) connection.close();

} catch (SQLException sqle) {

}

}







Ce qui me gêne dans ton source, c'est ta requête de mise
à jour. La méthode executeUpdate n'interprète pas les nom de variable
dans la chaîne SQL. Si le code que je te fournit te convient, regarde
également l'utilisation des java.sql.PreparedStatement



Chris.
0
cs_lamane Messages postés 20 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 1 avril 2007
2 oct. 2005 à 12:57
bon votre probleme est simple
vous avis mis cette reauette comme suit
nbe=s.executeUpdate("insert into Dep values('Dep2',dt2)");
est bien evidament c4est faut car.
votre requette est une chaine de caractere alors elle va etre envoyer au sgbd exactement comme vous l4avez saisie par contre si tu fait comme suit vous allez inchalah reussie .
nbe=s.executeUpdate("insert into Dep values('"+Dep2+"',"+dt2"+)");
0
Rejoignez-nous