Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/01/2011, 16h51   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 2
Points : 1
Points : 1
Par défaut Insérer une datatable dans une base de données SQL sans boucle

Bonjour,

Je débute en SQL et en vb.net. Je fait une application en VB.net pour Ipaq.
J'ai une fonction mise à jour, qui va chercher des données sur des clients dans un serveur SQL, qui les insere dans la datatable Table_OCRD puis, qui les insére dans le serveur SQLCe d'un IPAQ.
Je voudrais savoir si c'est possible d'insérer une datatable dans une base de données SQL sans avoir à utiliser une boucle avec Insert Into pour insérer rangée par rangée.

Pour l'instant, j'insère les données dans le server SQL Ce comme ca

Code :
1
2
3
4
5
FOR i AS Integer = 0 TO 300
 
            Dim SQLCmd2 AS String = "INSERT INTO ClientGeneralReduit VALUES('" Table_OCRD.Rows(i).Item("CardCode").ToString & "'," & Table_OCRD.Rows(i).Item("rownb") & ...."')"
 
Next
Je voudrais savoir si je pourrais faire quelque chose qui ressemble à ca pour insérer ma table dans la base de données en une ligne.

Code :
Dim SQLCmd2 AS String = "select * into ClientGeneralReduit [in DataBaseGarde] from Table_OCRD"
Est-ce que je dois creer un objet Command et un Dataset ?
Fichiers attachés
Type de fichier : vb miseajour.vb (2,1 Ko, 0 affichages)
reto2011 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 19h56   #2
Invité de passage
 
Inscription : janvier 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 2
Points : 1
Points : 1
Par défaut Solution

J'ai trouvé une solution ! C'est beaucoup plus rapide que les insert into. Je met 5 min a charger ma table sur le serveur. Avant je mettais, une heure !!

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 
Try
              Dim SQLCmd AS String = "exec UpdateListeClient"
 
              Table_OCRD = SQLServerMiseAjour.SendCmd(SQLCmd).TABLES(0)
 
            ' je supprime les donnees de la table dans le serveur sqlce
            Dim SQLCmdCe As String = "DELETE from ClientGeneralReduit"
            SqlServerCe.SendCmd(SQLCmdCe, True)
 
             Dim con As SqlCeConnection = SqlServerCe.GETConnection
        If con.State = ConnectionState.Closed Then con.Open()
 
        Using cmd As SqlCeCommand = New SqlCeCommand()
            cmd.Connection = con
            cmd.CommandText = "ClientGeneralReduit"
            cmd.CommandType = CommandType.TableDirect
 
            Using rs As SqlCeResultSet = cmd.ExecuteResultSet(ResultSetOptions.Updatable Or ResultSetOptions.Scrollable)
                Dim record As SqlCeUpdatableRecord = rs.CreateRecord()
 
    For i = 0 To 17000
                    record.SetValue(0, Table_OCRD.Rows(i).Item("CardCode"))   record.SetValue(1, Table_OCRD.Rows(i).Item("rownb"))
                    record.SetValue(2, Table_OCRD.Rows(i).Item("Cardname"))
                    record.SetValue(3, Table_OCRD.Rows(i).Item("Address"))
                    record.SetValue(4, Table_OCRD.Rows(i).Item("ZipCode"))
                    record.SetValue(5, Table_OCRD.Rows(i).Item("City"))
                    record.SetValue(6, Table_OCRD.Rows(i).Item("Phone1"))
                    record.SetValue(7, Table_OCRD.Rows(i).Item("Freq1"))
                    record.SetValue(8, Table_OCRD.Rows(i).Item("U_BGDerniereLivr"))
                    record.SetValue(9, Table_OCRD.Rows(i).Item("U_BGLivraisonEnCour"))
                    record.SetValue(10, Table_OCRD.Rows(i).Item("U_BGListeNoire"))
                    record.SetValue(11, Table_OCRD.Rows(i).Item("U_BGendroitGeo"))
                    record.SetValue(12, Table_OCRD.Rows(i).Item("U_LEmpID"))
                    record.SetValue(13, Table_OCRD.Rows(i).Item("U_BGNbLitres"))
                    record.SetValue(14, Table_OCRD.Rows(i).Item("U_BGSTOPLI"))
                    record.SetValue(15, Table_OCRD.Rows(i).Item("Livreur"))
                    record.SetValue(16, Table_OCRD.Rows(i).Item("Liv2"))
                    rs.Insert(record)
                Next
            End Using
 
        End Using
        con.Close()
 
 
 
                   Catch ex As Exception
            PanelProgression.Hide()
            MsgBox("erreur: " + ex.Message)
 
        End Try
reto2011 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h31.


 
 
 
 
Partenaires

Hébergement Web