Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

3 février 2014 1 03 /02 /février /2014 17:35

1-Types de données

ACCESS

SQL

C#

Numérique

Long

int

Texte court

VarChar

string

Texte long

LongText

string

Date/Heure

DateTime

DateTime

Monétaire

Currency

double

Oui/Non

Bit

bool

Objet OLE

LongBinary

byte[]

Lien hypertexte

LongText

string

 

A cela on peut ajouter Short, Single, Double, Decimal, Byte, VarBinary

Exemple :

On crée une table Product avec Access   

  access1.png

La même table en SQL

Create table [Product]

(

[ProductId] LONG NOT NULL IDENTITY (1,1) PRIMARY KEY,

[ProductName] VarChar(50) NOT NULL,

[Description] LongText NULL,

[UnitsInStock] Long NOT NULL,

[RequiredDate] DateTime NOT NULL,

[UnitPrice] Currency NULL,

[Discontinued] Bit NULL,

[Picture] LongBinary NULL,

[ProduitUrl] LongText NULL

)

 

La classe C# (simplifiée) correspondante

public class Product

{

        public int ProductId { get; set; }

        public string ProductName { get; set; }

        public string Description { get; set; }

        public int UnitsInStock { get; set; }

        public DateTime RequiredDate { get; set; }

        public double UnitPrice { get; set; }

        public bool Discontinued { get; set; }

        public byte[] Picture { get; set; }

        public string ProduitUrl { get; set; }

}

 

2-Syntaxe des requêtes et procédures

 

Le nom des paramètres (OleDbParameter  et DbParameter) est « inutile », c’est plus l’ordre d’ajout des paramètres à la commande qui compte .

On peut aussi bien écrire

command.CommandText = "INSERT INTO [Client]([Name],[Email],[CategoryId]) VALUES(@name,@mail,@categoryId)";

command.Parameters.Add(new OleDbParameter("@name", client.Name));

command.Parameters.Add(new OleDbParameter("@email", client.Email));

command.Parameters.Add(new OleDbParameter("@categoryId", client.CategoryId));

que

command.CommandText = "INSERT INTO [Client]([Name],[Email],[CategoryId]) VALUES(?,?,?)";

command.Parameters.Add(new OleDbParameter("?", client.Name));

command.Parameters.Add(new OleDbParameter("?", client.Email));

command.Parameters.Add(new OleDbParameter("?", client.CategoryId));

 

C’est tellement vrai que l’on peut même donner un nom de paramètre ne correspondant pas du tout à celui utilisé dans la requête.

  • Pour les vues/procédures il faut respecter une écriture.

Ajouter un préfixe « par » devant les paramètres peut éviter les conflits  avec les noms de colonnes.

Ne pas utiliser non plus @ pour les paramètres si on ne veut pas avoir de mauvaises surprises :o

Exemple

CREATE PROCEDURE [InsertCategory](parName VarChar(100))

AS

INSERT INTO [Category]([Name] )

VALUES(parName)

GO

 

3- Récupérer @@IDENTITY

Il est possible de récupérer la clé auto incrémentée ajoutée, mais on ne peut pas ajouter la requête avec l’insert comme c’est le cas avec SQL Server.

command.CommandText = "Select @@IDENTITY";

result = Convert.ToInt32(command.ExecuteScalar());

 

Partager cet article

Repost 0
Published by Romagny13 - dans ADO.NET
commenter cet article

commentaires