Datagridview et sqlserver

devdream - 19 mars 2013 à 10:49
 MINDONGO - 30 mai 2013 à 09:43
Bonjour à toutes et à tous.


Je souhaiterai faire un insert de tous les éléments d'une colonne d'un datagridview vers une colonne d'une table avec une contrainte foreign key sous sqlserver.

De plus je voudrai éviter les doublons, donc si l'élément existe dans la table = ne pas l'ajouter...

Merci par avance à Codes Sources, et à tous ceux qui se pencheront sur ma problèmatique...

10 réponses

J'ai crée une Procédure stockée sur SQL server pour remplir les deux colonnes de ma table et la gestion des doublons.

Mais comment puis-je gérer la lecture de toutes les lignes de la colonne de mon datagridview et l'utilisation de cette procédure en C# sous Visual Studio 2005.

Merci !
0
 SqlConnection conn = new SqlConnection(@"Data Source=.;Initial Catalog= (nom_base_donne) ;User=xx;Password=xxx");
        SqlDataAdapter    da = new SqlDataAdapter("select DISTINCTE champs   from table conn);
da.Fill(ds);
            dt = ds.Tables[0];
            dataGridView1.DataSource = dt;


Voila les donner de cette requette vont être afficher sur la datagrid view
0
j'ai oublier avant le da.fill(ds) tu doit instancier une dataset

DataSet ds= new DataSet();
0
Merci Chouaib24 pour l'intérêt que tu portes à mon problème, mais mon datagridview est déjà rempli, c'est justement le contraire que je dois faire, j'ai crée mes tables, prévu une procédure stockée, et donc je souhaite exporter une colonne et toutes les lignes de cette colonne (du datagridview) dans ma table sql server.

Ma procédure est composée de deux @paramètres un nvarchar de la table et un ID d'une autre table qui est donc la Foreign_Key...
0

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

Posez votre question
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
19 mars 2013 à 21:34
Salut,

une solution:

// 1 : Crée un DataTable qui matche la table de destination en base
DataTable dt = new DataTable("Test");
dt.Columns.Add("ID", typeof(Int32));
dt.Columns.Add("CHAMP", typeof(String));

// Selectionne d'une manière ou d'une autre les lignes 
// selon un critere dans le dataGridView
DataRow[] rows = 
    ((DataTable)datagridview.DataSource).Select("maFK = 999);

// Boucle et récupère que la colonne voulue vers la table dest.
for(int i = 0; i < rows.Length; i++)
{
    DataRow newRow = dt.NewRow();
    newRow["ID"] = rows[i]["UNID"]);
    newRow["CHAMP"] = rows[i]["UNCHAMP"]);
    dt.Rows.Add(newRow);
}
// Valide les ajouts
dt.AcceptChanges();

// Utilise un bulk pour insérer les données en base
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(cnx))
{
    bulkCopy.DestinationTableName = "dbo.tableDest";
    bulkCopy.WriteToServer(dt);
}


(code non testé)
bye...
0
Merci Yann, je ne pense pas que ce code soit nécessaire ( de plus je ne le maitrise pas le moins du monde)

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[UpdateAbsences]
    @pTypeAbsence	nvarchar(250),
    @pIdClasse	int
AS
BEGIN
SET NOCOUNT ON;

    IF (SELECT count(*) FROM ABSENCES
        WHERE ID_Classe = @pIdClasse
        AND Type_Absence @pTypeAbsence) 0
    BEGIN
     	INSERT Absence (TYPE_Absence, ID_Classe) 
        VALUES (@pTypeAbsence, @pIdClasse)
    END
END


Voila ma procédure stockée, je souhaiterai simplement faire un execute de ce genre :

Exec UpdateAbsences '..(tout ce que contient le datagridview..'    Select * from ABSENCES
0
Mais faire l' "exec" dans mon appli C#... avec une formulation pour la séléction d'une colonne et de son contenu.
0
nobody knows?
0
bonjour mon problème que j'ai mis un textbox pour filtrer automatiquement un datagridview mais sa marche pas ce code :
private void textBox1_TextChanged(object sender, EventArgs e)
{
con.Open();
DataView d = new DataView(table);
d.RowFilter = string.Format("select matricule from personnes LIKE '%{0}%'", textBox1.Text.ToString());
View1.DataSource = d;
con.Close();
}
me donne comme erreur : Erreur de syntaxe : opérande manquant après l'opérateur 'matricule'.
j'ai besoin de réponse le plus vite possible

et merci
0
@haydii
Cherche à créer Ton NOUVEAU SUJET
pour ta suite de hier essaye un truc comme ça
 private void RECHR_Click(object sender, EventArgs e)
{
Con.open ();

 SqlDataAdapter  adptr = new  SqlDataAdapter
 ("SELECT * FROM personnes where matricule=" + @Convert. ToString (textbox1.tex) + "", con);
            DataSet dts = new DataSet();
            try
            {
                adptr.Fill(dts, "personnes");

                View1.SetDataBinding(dts, "personnes");
                con.Close();
            }
           // catch (Exception KING)
            {
                //
            }
}

Soyons Toujours à la disposition des autres (si la personne à bien posée son problem)
0
Rejoignez-nous