Bonjour, je suis un tutorial montrant l'intéraction entre Ado.net et sql server,
j'ai deux tables classes et étudiant :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
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 USE [SCOLARITE] GO /****** Objet*: Table [dbo].[Classe] Date de génération du script*: 01/05/2009 12:13:12 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Classe]( [Libelle] [varchar](50) COLLATE French_CI_AS NOT NULL, [Niveau] [varchar](50) COLLATE French_CI_AS NOT NULL, CONSTRAINT [PK_Classe] PRIMARY KEY CLUSTERED ( [Libelle] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO USE [SCOLARITE] GO ALTER TABLE [dbo].[Classe] WITH CHECK ADD CONSTRAINT [FK_Classe_Classe] FOREIGN KEY([Libelle]) REFERENCES [dbo].[Classe] ([Libelle])
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
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 USE [SCOLARITE] GO /****** Objet*: Table [dbo].[Etudiant] Date de génération du script*: 01/05/2009 12:13:27 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Etudiant]( [Matricule] [varchar](50) COLLATE French_CI_AS NOT NULL, [Prenom] [varchar](50) COLLATE French_CI_AS NOT NULL, [Nom] [varchar](50) COLLATE French_CI_AS NULL, [Age] [int] NULL, [ClEtudiant] [varchar](50) COLLATE French_CI_AS NOT NULL, CONSTRAINT [PK_Etudiant] PRIMARY KEY CLUSTERED ( [Matricule] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO USE [SCOLARITE] GO ALTER TABLE [dbo].[Etudiant] WITH CHECK ADD CONSTRAINT [FK_Etudiant_Classe] FOREIGN KEY([ClEtudiant]) REFERENCES [dbo].[Classe] ([Libelle])
Puis j'ai crée une procédure stockée :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 USE [SCOLARITE] GO /****** Objet*: StoredProcedure [dbo].[SELECTEtudiantsByClasse] Date de génération du script*: 01/05/2009 12:14:03 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /*==================== STORED PROCEDURE ====================*/ CREATE Procedure [dbo].[SELECTEtudiantsByClasse](@ClasseLibelle varchar(50)) AS SELECT * FROM [Etudiant] where ClEtudiant=@ClasseLibelle
j'ai essayé le programme suivant :
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
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 // Exemple d'extraction de données avec l'objet DataReader using System; using System.Data.SqlClient; using System.Data; using System.IO; namespace ExempleAdoNetCSharp { public class SQLConnexion { public static void Main() { string strConnexion = "Data Source=localhost; Integrated Security=SSPI;" + "Initial Catalog=SCOLARITE"; string strProcedureStockee = "SELECTEtudiantsByClasse"; try { SqlConnection oConnection = new SqlConnection(strConnexion); SqlCommand oCommand = new SqlCommand(strProcedureStockee, oConnection); oCommand.CommandType = CommandType.StoredProcedure; SqlParameter oParam = oCommand.Parameters.Add("@ClasseLibelle", SqlDbType.VarChar, 50, "Libelle"); oParam.Value = "cl1"; oConnection.Open(); SqlDataReader oReader = oCommand.ExecuteReader(); Console.WriteLine("\t{0}\t{1}", oReader.GetName(0), oReader.GetName(1)); while (oReader.Read()) { Console.WriteLine("\t{0}\t{1}}", oReader.GetString(0), oReader.GetString(1)); } oReader.Close(); oConnection.Close(); } catch (Exception e) { Console.WriteLine("L'erreur suivante a été rencontrée :" + e.Message); } Console.ReadLine(); } } }
je veux afficher uniquement le matricule et le nom des étudiants, lorsque j'exécute la PS au niveau sql avec cl1 il me donne le résultat, voici le message d'erreur :
vous avez une idée ?Matricule Prenom
L'erreur suivante a été rencontrée :Le format de la chaîne d'entrée est incorrec t.
Partager