JAVA requete UPDATE sur une db SQL srv 2000

Fermé
Coyote_fx - 27 août 2004 à 22:02
 Coyote_fx - 28 août 2004 à 22:21
Bonjour,

Voilà j'ai un petit problème, je travail sur une application qui doit écrire et faire quelques update dans une base de données SQL server 2000 SP3, je n'ai aucun problème pour faire un INSERT mais lorsque je fais un update le compilateur reste bloqué sur :

int intinsetrt=statm.executeUpdate(requete);

j'ai aussi fait :
statm.execute(requete);

ou encore
utiliser un PreparedStatement...

Je suis allors obligé de fermer Eclipse et de le relancer.

je n'ai aucun message d'erreur du compilateur... Seulement si j'ouvre la console MMC de SQL et que je veux visualiser les données de ma table, il travail mais rien ne s'affiche et après 2min j'ai un message "SQL délai d'attente expiré" s'affiche. C'est comme si le process qui doit écrire bouclait sans fin... et ne libère pas l'accès à la table... Bizard bizard...

Mais rien y fait !!!!!!!!! J'ai bien sur tester ma requete dans le query analyser et ca prouve bien que mon connecteur ODBC est Nikel !


Voilà je suis relativent en merdé, merci à ceux qui me donnerons leurs conseils. Ils auront droit a ma reconnaissance éternel pour la fin des temps de l'univer tout entier!

Coyote_fx

Station de travail en win 2000 pro
JDK 1.4.2
Eclipse 3.0
SQL Server 2000 sp2


Dans la requete SQL (exemple) :
-------------------
UPDATE NOEUDS SET ID_ETAT=2,SYSNAME_NOEUD='COYOTE',SYSLOCALISATION_NOEUD='',SYSSERVICES_NOEUD=0,SYSDESC_NOEUD='',SYSCONTACT_NOEUD='',IFNUMBER_NOEUD=0 WHERE ID_NOEUD=109295568324271;


Ma table NOEUDS:
---------

ID_NOEUD
ID_ETAT
ID_NOEUD_NDTYPE
ID_ERREURS
ID_LAN
SYSNAME_NOEUD
IP_NOEUD
SYSLOCALISATION_NOEUD
SYSSERVICES_NOEUD
SYSDESC_NOEUD
SYSCONTACT_NOEUD
IFNUMBER_NOEUD
COMMUNITY1_NOEUD
OID_CPU_NOEUD
VERSNMP_NOEUD
...



Ma classe:
----------

import java.sql.*;

public class Db_Write
{

private Driver pilote=null;
private Connection connect=null;
private ResultSet rs=null;
private Statement statm=null;

public Db_Write(){}

public void dbConnect() throws Exception
{
pilote=(Driver)
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
connect = DriverManager.getConnection("jdbc:odbc:Nettrafic_db");
}

public boolean updateNoeud1(long idnoeud,String sysname,String syslocalisation,int sysservice,String sysdesc,String syscontact,int ifnumber, String oidcpu,boolean usecpu,String community1,String ip) throws Exception
{
int tmpUseCpu;
if (usecpu==false)
{
tmpUseCpu=0;
}else
{
tmpUseCpu=1;
}
Outil_db cottes;
cottes =new Outil_db();
System.out.println("Dans la requete Update into noeud 1");
String requete ="UPDATE NOEUDS SET ID_ETAT=2,SYSNAME_NOEUD='"+cottes.secuSql(sysname)+"',SYSLOCALISATION_NOEUD='"+cottes.secuSql(syslocalisation)+"',SYSSERVICES_NOEUD="+(sysservice)+",SYSDESC_NOEUD='"+cottes.secuSql(sysdesc)+"',SYSCONTACT_NOEUD='"+cottes.secuSql(syscontact)+"',IFNUMBER_NOEUD="+(ifnumber)+" WHERE ID_NOEUD="+idnoeud+";";
System.out.println("Dans la requete :"+requete);
statm=connect.createStatement();
System.out.println("Dans la requete Update noeud 3");
int intinsetrt=statm.executeUpdate(requete);
System.out.println("Dans la requete Update noeud 4");
System.out.println(requete);
boolean resulta =true;
return(resulta);
}




public void dbClose() throws Exception
{
statm.close();
connect.close();
}


}
A voir également:

2 réponses

Hello !

Peux-tu fournir le code de la classe Outil_db stp ?
0
Ok voici le code brut de la classe, la méthode secuSql est au début...

Merci de m'aider ;-)


import java.util.Date;
import java.util.Random;
public class Outil_db
{
public Outil_db()
{

}

public String secuSql(String str)
{ // pour sécuriser les entrées SQL cette méthode double les '.


StringBuffer chaine= new StringBuffer (str);
int lenChaine=chaine.length();
int i=0;
char r='\'';
Character ev_char;
Character str_char;
ev_char= new Character(r);

while (i<lenChaine)
{
str_char=new Character (chaine.charAt(i));

if ((str_char.compareTo(ev_char))==0)
{
chaine.insert(i,ev_char);
i++;
lenChaine=lenChaine+1;
}
i++;
}

return chaine.toString();

}

public String[] getDecomposerAdr(String strip)
{//Methode qui décompose une adesse IP en un tableau de 4 String
String strIp=strip;
String[] tmpstr= {"","","",""};

Character PointCh=new Character('.');
int leng=strIp.length();

int pt=0;
for (int i=0;i<leng;i++)
{
Character tmpCh=new Character(strIp.charAt(i));

if (tmpCh.compareTo(PointCh)==0)
{
pt=pt+1;
//tmpstr[pt]=tmpstr[pt]+strIp.charAt(i);
}else
{
tmpstr[pt]=tmpstr[pt]+strIp.charAt(i);
}
}

return tmpstr;
}

public long sqlDateTime()
{ //retourne un long qui contient la date en miliseconde + un numero aléatoire.
// a pour but d'empécher que deux éléments LAN, WAN, SITE, NOEUD ne puissent avoir le même numero identifieant
Date madate = new Date();

String longtimeAleat="";
Long longdate= new Long(madate.getTime());
System.out.println(longdate);
Random rnd = new Random();
int i=(int) (rnd.nextDouble()*99);
System.out.println("Chiffre alléatoire :"+i);

if (i<10)
{
longtimeAleat =longdate.toString()+'0'+i;

}
else
{
longtimeAleat =longdate.toString()+i;
}

longdate=longdate.valueOf(longtimeAleat);

return longdate.longValue();
}

public long originalDateTime(long sqlDateTime)
{//retourne la date original donc sans le numero aléatoire
long tmplong=sqlDateTime/100;

return tmplong;
}

public String compilStrAdrTab(String[] tmpAdr)
{ //compil le tableau en une seul string
return tmpAdr[0]+"."+tmpAdr[1]+"."+tmpAdr[2]+"."+tmpAdr[3];
}

public String compilStrAdrTab(int[] tmpAdr)
{ //compil le tableau en une seul string
return tmpAdr[0]+"."+tmpAdr[1]+"."+tmpAdr[2]+"."+tmpAdr[3];
}


public String strRasembleAdr(String adr1,String adr2,String adr3,String adr4)
{
String strAdr="";
strAdr=adr1+"."+adr2+"."+adr3+"."+adr4;
return strAdr;
}


public boolean strVerifNull(String strVerifNull)
{// vérifie qu'une chaine n'est pas = à "" ou remplie de blanc.
//retourne un boolean renvoi true si la chaine =""
boolean verifNull=false;
if (strVerifNull.trim().compareTo("")==0)
{
verifNull=true;
}
return verifNull;
}


}
0