Update BD mysql

Nico_35136 Messages postés 55 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 21 février 2012 - 9 mars 2010 à 13:39
fadouahassen22 Messages postés 15 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 25 août 2010 - 15 août 2010 à 14:58
Bonjour tout le monde,

Voilà j'aimerai que l'on m'éclaire un tout petit peu.

Donc je travail avec une base de donnée Mysql ce que j'aimerai faire c'est que toutes les heure il envoie l'heure ainsi que la date dans ma base.

Voici ce que j'ai pour récupérer la date:
		DateFormat format = new SimpleDateFormat("HHmmddMMyyyy");//HHmmddMMyyyy
String dates = format.format(new Date());
long date = Long.parseLong(dates);


et pour insérer une donnée dans ma base :
s = (Statement) db.createStatement();
s.executeUpdate("insert into test values (1, 1)");


De mon coté j'arrive bien a envoyer les données 1, 1 dans ma base mais comment envoyer la variable date dans ma base.

dite moi ci ce n'est pas clair

merci

15 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
9 mars 2010 à 13:47
Salut,

Pourquoi stocker sous la forme d'un Long ? Stocke directement au format DateTime (niveau base de données) et Date (niveau java) : ca t'évitera de t'arracher les cheveux à implémenter des algorithmes de conversion, ca te permettra de faire des requêtes très simplement sur les champs de type date, et ca te permettra de tester bien plus facilement les valeurs !

Au niveau de ta base MySQL, tu crée un champ de type DATETIME

Et au niveau java :
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dates = format.format(new Date());
s = (Statement) db.createStatement();
s.executeUpdate("insert into test values (1, '" + dates + "')");

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
Nico_35136 Messages postés 55 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 21 février 2012
9 mars 2010 à 15:04
et bien ça c'est de la rapidité !

Merci beaucoup DARKSIDIOUS.

J'ai juste eu une exception mais cela venais du format de ma colonne elle était en int du coup je l'ai modifié en long.

Merci encore
0
Nico_35136 Messages postés 55 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 21 février 2012
14 avril 2010 à 11:27
Bonjour, j'ai autre petit problème.

voila le code que vous m'avez donné la dernière fois fonctionne a merveille du coup je l'ai testé sur une autre commande :
String table= "main";

rs = s.executeQuery("SELECT * FROM '"+table+"'");


mais il me dise que j'ai une erreur de syntaxe.

Cela doit être tout bête pour vous mais moi je bloque ..

Encore merci d'avance
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
14 avril 2010 à 11:31
Salut,

Pas besoin de quote autour du nom d'une table :
String table= "main";

rs = s.executeQuery("SELECT * FROM "+table);


______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nico_35136 Messages postés 55 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 21 février 2012
14 avril 2010 à 11:44
toujours aussi rapide DARKSIDIOUS merci beaucoup je test ça cette après-midi
0
fadouahassen22 Messages postés 15 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 25 août 2010 1
14 août 2010 à 15:17
bonjour SVP ! j'ai un pb au niveau de ma requete SQL ca me rend folle

voilà mon code:
PreparedStatement pstmt = connect.getInstance().prepareStatement(
" update user_table " +
" set Name = ? , " +
" Fmily_Name = ? , " +
" Login = ? , " +
" Password = ? , " +
" Function = ? , " +
" E_mail = ? , " +
" where id_user = ? ");
pstmt.setString(1,nom);
pstmt.setString(2, fnom);
pstmt.setString(3, log);
pstmt.setString(4, psswd);
pstmt.setString(5, fun);
pstmt.setString(6, mail);
pstmt.setString(7, val1);


pstmt.executeUpdate();

pstmt.close();
/*********************************/

ça me génère l'erreur suivante:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where id_user = '51'' at line 1

/************************************/

aidez moi SVP. merci beaucoup
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
14 août 2010 à 15:29
Salut,

Ton id_user est de type varchar ? Car si ce n'est pas le cas, il ne faut pas faire : pstmt.setString(7, val1); mais plutôt : pstmt.setInt(7, val1);
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
fadouahassen22 Messages postés 15 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 25 août 2010 1
15 août 2010 à 13:19
bonjour,
j'ai fais ça hier en déclarant la valeur que je récupère de ma table ( la base de données ) comme suit:
/*********************************/
Integer val1=(Integer) table.getValueAt(i, 0);
/*********************************/

puis j'ai fais : pstmt.setInt(7, val1);

mais ça me renvoi l erreur suivante:
/***********************/
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
/******************************/
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
15 août 2010 à 13:49
Salut,

Au lieu d'essayer de caster un string en interger, parse le :
Integer val1= (Integer) table.getValueAt(i, 0);
devient :
Integer val1 =Integer.parseInt(table.getValueAt(i, 0));
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
fadouahassen22 Messages postés 15 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 25 août 2010 1
15 août 2010 à 13:59
Non ça ne marche pas , l'argument de la methode ( parseInt ) doit etre de type String; j'ai fais le cast en String puis j'ai appliqué ce que tu as proposé mais toujours les mm erreurs.
je m'excuse si je dis des bétises mais je débute avec java et je rencontre des problèmes qui me gènent mon avancement dans le projet.


voilà l erreur :

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where id_user = 52' at line 1



merci vraiment pour m'aider
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
15 août 2010 à 14:11
Salut,

Ah oui mais là l'erreur que tu me sors là n'a plus rien à voir avec la précédente.

Montre nous ton code pour voir ce qui ne marche pas, et indique nous la ligne correspondant à ton exception.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
fadouahassen22 Messages postés 15 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 25 août 2010 1
15 août 2010 à 14:26
d'accord voilà la partie du code:

/*****************************/
void modify_actionPerformed(ActionEvent e) {

for(int i = 0 ; i <table.getRowCount(); i++){
Object val=table.getValueAt(i, 7).getClass().isInstance(box);
String val3=table.getValueAt(i, 7).toString();

if (val3.matches("true")) {

String nom= (String)table.getValueAt(i,1);
String fnom=(String)table.getValueAt(i,2);
String log= (String)table.getValueAt(i,3);
String psswd=(String)table.getValueAt(i,4);
String fun= (String)table.getValueAt(i,5);
String mail=(String)table.getValueAt(i,6);
Integer val1=Integer.parseInt( (String)table.getValueAt(i, 0));

try {
System.out.println("avant update");

PreparedStatement pstmt = connect.getInstance().prepareStatement(
" update user_table " +
" set Name = ? , " +
" Fmily_Name = ? , " +
" Login = ? , " +
" Password = ? , " +
" Function = ? , " +
" E_mail = ? , " +
" where id_user = ? ");

pstmt.setString(1,nom);
pstmt.setString(2, fnom);
pstmt.setString(3, log);
pstmt.setString(4, psswd);
pstmt.setString(5, fun);
pstmt.setString(6, mail);
pstmt.setInt(7, val1);

pstmt.executeUpdate();
pstmt.close();




System.out.println("update done !!!!!!!!");

}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
/********************************************************/

l'erreur c'est pas ds une ligne précise

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where id_user = 52' at line 1

je pense qu'il ya un pb avec le syntax comme l indique l erreur mais j'ai beau cherché ss résultat. je ne sais pas ou se trouve le pb exactement.


merci d'avance
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
15 août 2010 à 14:47
Salut,

J'avais pas vu, mais tu as une virgule de trop qui traîne dans ta requête :
PreparedStatement pstmt = connect.getInstance().prepareStatement(
" update user_table " +
" set Name = ? , " +
" Fmily_Name = ? , " +
" Login = ? , " +
" Password = ? , " +
" Function = ? , " +
" E_mail = ? ,
" +
" where id_user = ? ");

supprime la.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
fadouahassen22 Messages postés 15 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 25 août 2010 1
15 août 2010 à 14:55
hi !
merci bcp , c 'était ça le problème.
merci beaucoup pour toi.
0
fadouahassen22 Messages postés 15 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 25 août 2010 1
15 août 2010 à 14:58
je me permet de poser une question svp, je veux qu'après avoir fait le mis à jour de ma base de données ça s'affiche directement sur la fenetre que l'utilisateur a lancé et à partir de laquelle il a fait la modification ; j'ai esseyé de faire fenetre.update et repaint mais rien ne s'affiche.
les modifications ne paraissent que si je ferme la fenetre et je l'ouvre de nouveau.

thx a lot :)
0