Obtenir l'id ou l'enregistrement suivant ou précédent dans une table


 5/27/2015

Obtenir le champ suivant :

select top 1 id
from LaTable
where id > @Id
ORDER BY id ASC

Obtenir le champ précédent :

select top 1 id
from LaTable
where id < @Id
ORDER BY id DESC

Si cette requête est utilisée dans une application, il faudra aussi savoir si c'est le dernier enregistrement ou le premier :

select min(id)
from LaTable

 


select max(id)
from LaTable

Lire >>

Remplir un menu depuis une base de données


 5/27/2015

protected void makeMenu()

    {

        DataSet ds = GetDataSetForMenu();

 

        foreach (DataRow parentItem in ds.Tables["Categories"].Rows)

        {

            MenuItem categoryItem = new MenuItem((string)parentItem["CategoryName"]);

            menuAsp.Items.Add(categoryItem);

 

            foreach (DataRow childItem in parentItem.GetChildRows("Children"))

            {

                MenuItem childrenItem = new MenuItem((string)childItem["ProductName"]);

                categoryItem.ChildItems.Add(childrenItem);

            }

        }

    }

 

 

    private DataSet GetDataSetForMenu()

    {

        string connec = La ConnectionString;

 

        SqlConnection myConnection = new SqlConnection(connec);

        SqlDataAdapter adCat = new SqlDataAdapter("SELECT * FROM Categories", myConnection);

        SqlDataAdapter adProd = new SqlDataAdapter("SELECT * FROM Products", myConnection);

 

        DataSet ds = new DataSet();

        adCat.Fill(ds, "Categories");

        adProd.Fill(ds, "Products");

 

        ds.Relations.Add("Children", ds.Tables["Categories"].Columns["CategoryID"], ds.Tables["Products"].Columns["CategoryID"]);

        return ds;

 

    }   

 

Lire >>

Réinitialiser l'auto incrémentation sur sql server


 5/27/2015

Pour réinitialiser la valeur de départ d'une colonne auto-incrémentée, deux solutions :

  • Le truncate qui va supprimer toutes les données et réinitialiser le compteur à 0
TRUNCATE NomDeLaTable
  • Le checkident qui va remettre la valeur du compteur à la valeur voulue
DBCC CHECKIDENT (NomDeLaTable, RESEED, LaValeurVoulue)

Lire >>

Vérifier si l'élément existe déjà avant création de trigger-tables-insertion dans SQL serveur


 5/27/2015

- Trigger

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

IF EXISTS (SELECT * FROM sys.objects WHERE [type] = 'TR' AND [name] = 'MyTrigger' )

    DROP TRIGGER  MyTrigger;

GO

-- =============================================

-- Author:<Author,,Name>

-- Create date: <Create Date,,>

-- Description:<Description,,>

-- =============================================

CREATE TRIGGER [ MyTrigger ]

   ON ...

- Table

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'MyTable')

CREATE TABLE [dbo].[ MyTable ](....

- Insertion de données

IF NOT EXISTS (SELECT id FROM [MyTable] WHERE [Name] = 'toto')

INSERT INTO [ MyTable ]

           ([Name]

           ,[Code])

     VALUES

           ('toto'

           ,'007')

- View

IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS  WHERE TABLE_NAME = 'MyView')

    DROP VIEW MyView

GO

 

CREATE VIEW MyView

AS 

     ....

GO

Lire >>

ExecuteNonQuery retourne toujours -1 avec procédure stockée


 5/20/2015

Si executeNonQuery retourne toujours -1, en général c'est une erreur toute bete liée a votre procédure stockée.

Si vous avez laissé le SET NOCOUNT ON le probleme est reglé, il suffit de supprimer cette ligne.

Cette commande indique a sql serveur d'arreter d'afficher le message contenant le nombre de lignes affectées

Lire >>

  • 1