Inserer plusieurs lignes en une seule requete ??

Signaler
Messages postés
22
Date d'inscription
dimanche 3 août 2003
Statut
Membre
Dernière intervention
16 décembre 2011
-
Messages postés
14
Date d'inscription
lundi 11 juillet 2005
Statut
Membre
Dernière intervention
23 avril 2008
-
Salut a tout l'monde, j'ai un petit souci avec une base access en C# :
je souhaite faire plusieurs INSERT a la suite, mais j'aimerais avoir a
faire le moins d'acces a la BDD possible (pour une question de rapidité
d'execution) ! Donc ma question est : est ce possible d'inserer
plusieurs lignes en une seule requete ? Ou bien est ce que l'on peut
importer des données a partir d'un fichier texte dans une base access ?

Merci de vos réponses !
A voir également:

6 réponses

Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
3
Tu dois pouvoir utiliser une requete du style IMPORT avec le nom de ton fichier texte ou une ligne corresopnd à un enregistrement, et délimiter les colonnes , apres, il faut aller voir dans l'aide de acces, pour voir ce qu'il accepte comme requete, et comment définir la fonction IMPORT.
Ceci est possible avec lea plupart des SGBD, et meme si Acces, c'est un peu tout pourri sur certain point, ca peut pas etre totalement pourri.

Mais ta question n'était pas vraiment du c#

En c#, en remplissant une datatable , tu peux faire un insert des lignes directement dans ta base. Apres le comment exactement, à toi de voir .
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
98
Salut,

Tu auras peut être des réponses plus pointues en demandant sur le forum de SQLfr.com :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
16
Date d'inscription
lundi 8 novembre 2004
Statut
Membre
Dernière intervention
11 octobre 2005

Ben écoute, en fait tu ne peu fair qu'un seul inserte par table :(

donc le mieux c de crée plusieur stringquery, que tu va inserer une après l'autre

un stringquery = un inserte dans UNE seule table.

voila un pti bout de code, pour une meilleur explication

j'utilise un classe config dans laquelle se trouve la chaine de connexion
et la connexion et de type ODBC


OdbcConnection cn =
null ;


OdbcCommand cmdInsert ;
OdbcCommand cmdInsert2 ; //tu doi cée autan de commande que tu a d'insert

string queryInsert 1;
string queryInsert 2 ;
...

try
{
cn =
new OdbcConnection(config.connectionString()) ;
cn.Open() ;


queryInsert = "INSERT INTO [Table]([Colone])"+
" VALUE ([donnée])" ;
queryInsert2 = "INSERT INTO ...

cmdInsert =
new OdbcCommand(queryInsert,cn) ;
cmdInsert2 = new OdbcCommand(queryInsert2,cn) ;


cmdInsert.ExecuteNonQuery() ;
cmdInsert2.ExectueNonQuery() ;
}



catch(OdbcException ex)


{


MessageBox.Show(ex.ToString()) ;


}



finally


{



if(cn !=
null)


{


cn.Close();


}


}


}



Voila en espèrant que sa puisse taider
Messages postés
22
Date d'inscription
dimanche 3 août 2003
Statut
Membre
Dernière intervention
16 décembre 2011
1
Merci bien, mais du coup, j'ai qd meme plusieurs acces a la base de données, et en fait, c'est ce que je souhaiterais eviter !!
Messages postés
16
Date d'inscription
lundi 8 novembre 2004
Statut
Membre
Dernière intervention
11 octobre 2005

ben pour fair des insert, tu es obliger!

et en utilisant le bout de code donnée o dessu, tu ne fai k'une
connection pour 10 insert si tu veu, vu ke le début de la connection c
le cn.open.



donc voila si tu trouve meilleur solution, je veu bien l avoir aussi :)



a plus
Messages postés
14
Date d'inscription
lundi 11 juillet 2005
Statut
Membre
Dernière intervention
23 avril 2008

Je pense que si tu veut avoir un seul acces a ta base de donnée construit une "grande" requète.

Du style : "requète1 ; requète2; ..." et normalement ca passe. Par
contre si tes requète ne sont pas bonne ca va etre plus difficile a
trouver la quel, c'est tou.

@+