Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

SqlCommand-Klasse

 

Stellt eine Transact-SQL-Anweisung oder eine gespeicherte Prozedur dar, die in einer SQL Server-Datenbank ausgeführt werden soll. Diese Klasse kann nicht vererbt werden.

Namespace:   System.Data.SqlClient
Assembly:  System.Data (in System.Data.dll)

System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.Data.Common.DbCommand
        System.Data.SqlClient.SqlCommand

public sealed class SqlCommand : DbCommand, ICloneable

NameBeschreibung
System_CAPS_pubmethodSqlCommand()

Initialisiert eine neue Instanz der SqlCommand-Klasse.

System_CAPS_pubmethodSqlCommand(String)

Initialisiert eine neue Instanz der SqlCommand-Klasse mit dem Text der Abfrage.

System_CAPS_pubmethodSqlCommand(String, SqlConnection)

Initialisiert eine neue Instanz der SqlCommand-Klasse mit dem Text der Abfrage und einer SqlConnection.

System_CAPS_pubmethodSqlCommand(String, SqlConnection, SqlTransaction)

Initialisiert eine neue Instanz der SqlCommand-Klasse mit dem Text der Abfrage, einer SqlConnection und der SqlTransaction.

System_CAPS_pubmethodSqlCommand(String, SqlConnection, SqlTransaction, SqlCommandColumnEncryptionSetting)

Initialisiert eine neue Instanz der SqlCommand-Klasse mit dem angegebenen Befehlstext sowie mit der angegebenen Verbindung, Transaktion und Verschlüsselung.

NameBeschreibung
System_CAPS_pubpropertyColumnEncryptionSetting

Ruft die Spaltenverschlüsselungseinstellung für diesen Befehl ab oder legt sie fest.

System_CAPS_pubpropertyCommandText

Ruft die Transact-SQL-Anweisung, den Tabellennamen oder die gespeicherte Prozedur ab, die oder der für die Datenquelle ausgeführt werden soll, oder legt diese(n) fest.(Überschreibt DbCommand.CommandText.)

System_CAPS_pubpropertyCommandTimeout

Ruft die Zeit ab, die gewartet werden soll, bis der Versuch einer Befehlsausführung beendet und ein Fehler generiert wird, oder legt diese fest.(Überschreibt DbCommand.CommandTimeout.)

System_CAPS_pubpropertyCommandType

Ruft einen Wert ab, der angibt, wie die CommandText-Eigenschaft interpretiert werden soll, oder legt diesen Wert fest.(Überschreibt DbCommand.CommandType.)

System_CAPS_pubpropertyConnection

Ruft die SqlConnection ab, die von dieser Instanz des SqlCommand verwendet wird, oder legt diese fest.

System_CAPS_pubpropertyContainer

Ruft die IContainer enthält die Component.(Geerbt von „Component“.)

System_CAPS_pubpropertyDesignTimeVisible

Ruft einen Wert ab bzw. legt einen Wert fest, der angibt, ob das Befehlsobjekt in einem Steuerelement für Windows Form-Designer sichtbar sein soll.(Überschreibt DbCommand.DesignTimeVisible.)

System_CAPS_pubpropertyNotification

Ruft einen Wert ab, der das SqlNotificationRequest-Objekt zu diesem Befehl angibt, oder legt diesen Wert fest.

System_CAPS_pubpropertyNotificationAutoEnlist

Ruft einen Wert ab, der angibt, ob die Anwendung automatisch Abfragebenachrichtigungen von einem allgemeinen SqlDependency-Objekt erhalten soll, oder legt diesen fest.

System_CAPS_pubpropertyParameters
System_CAPS_pubpropertySite

Ruft ab oder legt die ISite von der Component.(Geerbt von „Component“.)

System_CAPS_pubpropertyTransaction

Ruft die SqlTransaction ab, in der der SqlCommand ausgeführt wird, bzw. legt diese fest.

System_CAPS_pubpropertyUpdatedRowSource

Ruft ab oder legt fest, wie die Ergebnisse von Befehlen auf die DataRow angewendet werden, wenn diese von der Update -Methode des DbDataAdapter.(Überschreibt DbCommand.UpdatedRowSource.)

NameBeschreibung
System_CAPS_pubmethodBeginExecuteNonQuery()

Initiiert die asynchrone Ausführung der Transact-SQL-Anweisung oder der gespeicherten Prozedur, die von diesem SqlCommand beschrieben wird.

System_CAPS_pubmethodBeginExecuteNonQuery(AsyncCallback, Object)

Initiiert die asynchrone Ausführung der Transact-SQL-Anweisung oder der gespeicherter Prozedur, die von diesem SqlCommand beschrieben wird, wenn eine Rückrufprozedur und Zustandsinformationen verfügbar sind.

System_CAPS_pubmethodBeginExecuteReader()

Initiiert die asynchrone Ausführung der Transact-SQL-Anweisung oder der gespeicherten Prozedur, die von diesem SqlCommand beschrieben wird, und ruft ein oder mehrere Resultsets vom Server ab.

System_CAPS_pubmethodBeginExecuteReader(AsyncCallback, Object)

Initiiert die asynchrone Ausführung der Transact-SQL-Anweisung oder der gespeicherten Prozedur, die von diesem SqlCommand beschrieben wird, und ruft ein oder mehrere Resultsets vom Server ab, wenn eine Rückrufprozedur und Zustandsinformationen verfügbar sind.

System_CAPS_pubmethodBeginExecuteReader(AsyncCallback, Object, CommandBehavior)

Initiiert die asynchrone Ausführung der Transact-SQL-Anweisung oder der gespeicherten Prozedur, die von diesem SqlCommand beschrieben wird, wobei einer der CommandBehavior-Werte verwendet wird und ein oder mehrere Resultsets vom Server abgerufen werden, wenn eine Rückrufprozedur und Zustandsinformationen verfügbar sind.

System_CAPS_pubmethodBeginExecuteReader(CommandBehavior)

Initiiert die asynchrone Ausführung der Transact-SQL-Anweisung oder der gespeicherten Prozedur, die von diesem SqlCommand unter Verwendung eines der CommandBehavior-Werte beschrieben wird.

System_CAPS_pubmethodBeginExecuteXmlReader()

Initiiert die asynchrone Ausführung der Transact-SQL-Anweisung oder der gespeicherten Prozedur, die von diesem SqlCommand beschrieben wird, und gibt die Ergebnisse in Form eines XmlReader-Objekts zurück.

System_CAPS_pubmethodBeginExecuteXmlReader(AsyncCallback, Object)

Initiiert die asynchrone Ausführung der Transact-SQL-Anweisung oder der gespeicherten Prozedur, die von diesem SqlCommand beschrieben wird, und gibt mithilfe einer Rückrufprozedur die Ergebnisse in Form eines XmlReader-Objekts zurück.

System_CAPS_pubmethodCancel()

Versucht, die Ausführung eines SqlCommand abzubrechen.(Überschreibt DbCommand.Cancel().)

System_CAPS_pubmethodClone()

Erstellt ein neues SqlCommand-Objekt, das eine Kopie der aktuellen Instanz darstellt.

System_CAPS_pubmethodCreateObjRef(Type)

Erstellt ein Objekt, das alle relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind.(Geerbt von „MarshalByRefObject“.)

System_CAPS_pubmethodCreateParameter()

Erstellt eine neue Instanz eines SqlParameter-Objekts.

System_CAPS_pubmethodDispose()

Gibt alle vom Component verwendeten Ressourcen frei.(Geerbt von „Component“.)

System_CAPS_pubmethodEndExecuteNonQuery(IAsyncResult)

Beendet die asynchrone Ausführung einer Transact-SQL-Anweisung.

System_CAPS_pubmethodEndExecuteReader(IAsyncResult)

Beendet die asynchrone Ausführung einer Transact-SQL-Anweisung und gibt den angeforderten SqlDataReader zurück.

System_CAPS_pubmethodEndExecuteXmlReader(IAsyncResult)

Beendet die asynchrone Ausführung einer Transact-SQL-Anweisung, und gibt die angeforderten Daten als XML zurück.

System_CAPS_pubmethodEquals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.(Geerbt von „Object“.)

System_CAPS_pubmethodExecuteNonQuery()

Führt eine Transact-SQL-Anweisung für die Verbindung aus und gibt die Anzahl der betroffenen Zeilen zurück.(Überschreibt DbCommand.ExecuteNonQuery().)

System_CAPS_pubmethodExecuteNonQueryAsync()

Eine asynchrone Version der ExecuteNonQuery, das ausgeführt wird, einer SQL-Anweisung für ein Connection-Objekt.

Ruft ExecuteNonQueryAsync mit CancellationToken.None.(Geerbt von „DbCommand“.)

System_CAPS_pubmethodExecuteNonQueryAsync(CancellationToken)

Eine asynchrone Version von ExecuteNonQuery, die eine Transact-SQL-Anweisung gegen die Verbindung ausführt und die Anzahl der betroffenen Zeilen zurückgibt. Das Abbruchtoken kann verwendet werden, um anzufordern, dass der Vorgang abgebrochen wird, bevor das Timeout des Befehls abläuft. Ausnahmen werden über das zurückgegebene Taskobjekt gemeldet.(Überschreibt DbCommand.ExecuteNonQueryAsync(CancellationToken).)

System_CAPS_pubmethodExecuteReader()

Sendet den CommandText an die Connection und erstellt einen SqlDataReader.

System_CAPS_pubmethodExecuteReader(CommandBehavior)

Sendet CommandText an Connection, und erstellt einen SqlDataReader mit einem der CommandBehavior-Werte.

System_CAPS_pubmethodExecuteReaderAsync()

Eine asynchrone Version von ExecuteReader, die den CommandText an die Connection sendet, und einen SqlDataReader erstellt. Ausnahmen werden über das zurückgegebene Taskobjekt gemeldet.

System_CAPS_pubmethodExecuteReaderAsync(CancellationToken)

Eine asynchrone Version von ExecuteReader, die den CommandText an die Connection sendet, und einen SqlDataReader erstellt.

Das Abbruchtoken kann verwendet werden, um anzufordern, dass der Vorgang abgebrochen wird, bevor das Timeout des Befehls abläuft. Ausnahmen werden über das zurückgegebene Taskobjekt gemeldet.

System_CAPS_pubmethodExecuteReaderAsync(CommandBehavior)

Eine asynchrone Version von ExecuteReader, die den CommandText an die Connection sendet, und einen SqlDataReader erstellt. Ausnahmen werden über das zurückgegebene Taskobjekt gemeldet.

System_CAPS_pubmethodExecuteReaderAsync(CommandBehavior, CancellationToken)

Eine asynchrone Version von ExecuteReader, die den CommandText an die Connection sendet, und einen SqlDataReader erstellt.

Das Abbruchtoken kann verwendet werden, um anzufordern, dass der Vorgang abgebrochen wird, bevor das Timeout des Befehls abläuft. Ausnahmen werden über das zurückgegebene Taskobjekt gemeldet.

System_CAPS_pubmethodExecuteScalar()

Führt die Abfrage aus und gibt die erste Spalte der ersten Zeile im Resultset zurück, das durch die Abfrage zurückgegeben wird. Zusätzliche Spalten oder Zeilen werden ignoriert.(Überschreibt DbCommand.ExecuteScalar().)

System_CAPS_pubmethodExecuteScalarAsync()

Eine asynchrone Version der ExecuteScalar, dem führt die Abfrage aus und gibt die erste Spalte der ersten Zeile in der von der Abfrage zurückgegebenen Resultset zurück. Alle anderen Spalten und Zeilen werden ignoriert.

Ruft ExecuteScalarAsync mit CancellationToken.None.(Geerbt von „DbCommand“.)

System_CAPS_pubmethodExecuteScalarAsync(CancellationToken)

Eine asynchrone Version von ExecuteScalar, die die Abfrage asynchron ausführt und die erste Spalte der ersten Zeile in dem von der Abfrage zurückgegebenen Resultset zurückgibt. Zusätzliche Spalten oder Zeilen werden ignoriert.

Das Abbruchtoken kann verwendet werden, um anzufordern, dass der Vorgang abgebrochen wird, bevor das Timeout des Befehls abläuft. Ausnahmen werden über das zurückgegebene Taskobjekt gemeldet.(Überschreibt DbCommand.ExecuteScalarAsync(CancellationToken).)

System_CAPS_pubmethodExecuteXmlReader()

Sendet CommandText an Connection und erstellt ein XmlReader-Objekt.

System_CAPS_pubmethodExecuteXmlReaderAsync()

Eine asynchrone Version von ExecuteXmlReader, die CommandText zu Connection sendet, und ein XmlReader-Objekt erstellt.

Ausnahmen werden über das zurückgegebene Taskobjekt gemeldet.

System_CAPS_pubmethodExecuteXmlReaderAsync(CancellationToken)

Eine asynchrone Version von ExecuteXmlReader, die CommandText zu Connection sendet, und ein XmlReader-Objekt erstellt.

Das Abbruchtoken kann verwendet werden, um anzufordern, dass der Vorgang abgebrochen wird, bevor das Timeout des Befehls abläuft. Ausnahmen werden über das zurückgegebene Taskobjekt gemeldet.

System_CAPS_pubmethodGetHashCode()

Fungiert als die Standardhashfunktion.(Geerbt von „Object“.)

System_CAPS_pubmethodGetLifetimeService()

Ruft die aktuellen Service-Objekt, das die Lebensdauerrichtlinien für diese Instanz steuert.(Geerbt von „MarshalByRefObject“.)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_pubmethodInitializeLifetimeService()

Ruft ein Lebensdauerdienstobjekt zur Steuerung der Lebensdauerrichtlinien für diese Instanz ab.(Geerbt von „MarshalByRefObject“.)

System_CAPS_pubmethodPrepare()

Erstellt eine vorbereitete Version des Befehls in einer Instanz von SQL Server.(Überschreibt DbCommand.Prepare().)

System_CAPS_pubmethodResetCommandTimeout()

Setzt die CommandTimeout-Eigenschaft auf den Standardwert zurück.

System_CAPS_pubmethodToString()

Gibt eine String mit dem Namen der Component, sofern vorhanden. Diese Methode darf nicht überschrieben werden.(Geerbt von „Component“.)

NameBeschreibung
System_CAPS_pubeventDisposed

Tritt auf, wenn die Komponente, durch einen Aufruf freigegeben wird der Dispose Methode.(Geerbt von „Component“.)

System_CAPS_pubeventStatementCompleted

Tritt auf, wenn die Ausführung einer Transact-SQL-Anweisung abgeschlossen wurde.

NameBeschreibung
System_CAPS_pubinterfaceSystem_CAPS_privmethodIDbCommand.CreateParameter()

Erstellt eine neue Instanz von einem IDbDataParameter Objekt.(Geerbt von „DbCommand“.)

System_CAPS_pubinterfaceSystem_CAPS_privmethodIDbCommand.ExecuteReader()

Führt die CommandText anhand der Connection und erstellt eine IDataReader.(Geerbt von „DbCommand“.)

System_CAPS_pubinterfaceSystem_CAPS_privmethodIDbCommand.ExecuteReader(CommandBehavior)

Führt die CommandText für die Connection, und erstellt ein IDataReader mithilfe eines der der CommandBehavior Werte.(Geerbt von „DbCommand“.)

System_CAPS_pubinterfaceSystem_CAPS_privmethodICloneable.Clone()

Erstellt ein neues SqlCommand-Objekt, das eine Kopie der aktuellen Instanz darstellt.

System_CAPS_pubinterfaceSystem_CAPS_privpropertyIDbCommand.Connection

Ruft ab oder legt die IDbConnection verwendet, die durch diese Instanz von der IDbCommand.(Geerbt von „DbCommand“.)

System_CAPS_pubinterfaceSystem_CAPS_privpropertyIDbCommand.Parameters

Ruft das IDataParameterCollection ab.(Geerbt von „DbCommand“.)

System_CAPS_pubinterfaceSystem_CAPS_privpropertyIDbCommand.Transaction

Ruft ab oder legt die DbTransaction in der dieses DbCommand -Objekt ausgeführt wird.(Geerbt von „DbCommand“.)

Wenn eine Instanz des SqlCommand erstellt wird, werden die Lese-/Schreibzugriff Eigenschaften werden auf ihre Anfangswerte festgelegt. Eine Liste dieser Werte finden Sie in der SqlCommand Konstruktor.

SqlCommand enthält die folgenden Methoden zum Ausführen von Befehlen in einer SQL Server-Datenbank:

Element

Beschreibung

BeginExecuteNonQuery

Initiiert die asynchrone Ausführung der Transact-SQL-Anweisung oder gespeicherte Prozedur, die von dieser beschrieben wird SqlCommand, im Allgemeinen Ausführen von Befehlen, wie z. B. INSERT, DELETE, UPDATE und SET-Anweisungen. Jeder Aufruf von BeginExecuteNonQuery muss mit einem Aufruf von kombiniert werden EndExecuteNonQuery der der Vorgang in der Regel auf einem separaten Thread abgeschlossen wird.

BeginExecuteReader

Initiiert die asynchrone Ausführung der Transact-SQL-Anweisung oder gespeicherte Prozedur, die von dieser beschrieben wird SqlCommand und eine oder mehrere Resultsets vom Server abgerufen. Jeder Aufruf von BeginExecuteReader muss mit einem Aufruf von kombiniert werden EndExecuteReader der der Vorgang in der Regel auf einem separaten Thread abgeschlossen wird.

BeginExecuteXmlReader

Initiiert die asynchrone Ausführung der Transact-SQL-Anweisung oder der gespeicherten Prozedur, die durch diese SqlCommand beschrieben ist. Jeder Aufruf von BeginExecuteXmlReader muss mit einem Aufruf von kombiniert werden EndExecuteXmlReader, die den Vorgang in der Regel auf einem separaten Thread abgeschlossen wird, und gibt ein XmlReader Objekt.

ExecuteReader

Führt Befehle aus, die Zeilen zurückgibt. Zur Verbesserung der Leistung ExecuteReader Ruft Befehle mit der Transact-SQL sp_executesql gespeicherten Systemprozedur. Aus diesem Grund ExecuteReader ist den Effekt, der verwendet werden soll zum Ausführen von Befehlen wie Transact-SQL SET-Anweisungen.

ExecuteNonQuery

Führt Befehle wie Transact-SQL-INSERT, DELETE, UPDATE und SET-Anweisungen.

ExecuteScalar

Ruft einen einzelnen Wert (z. B. einen Aggregatwert) aus einer Datenbank ab.

ExecuteXmlReader

Sendet CommandText an Connection und erstellt ein XmlReader-Objekt.

Können Zurücksetzen der CommandText -Eigenschaft und die Wiederverwendung der SqlCommand Objekt. Sie müssen jedoch schließen die SqlDataReader bevor ein neuer oder zuvor verwendeter Befehl ausgeführt werden kann.

Wenn eine SqlException wird von der Methode ausgeführten generiert eine SqlCommand, die SqlConnection bleibt hergestellt, wenn der Schweregrad 19 oder darunter beträgt. Wenn der Schweregrad 20 oder größer ist, schließt der Server normalerweise die SqlConnection. Die Benutzer können die Verbindung aber erneut öffnen und fortfahren.

System_CAPS_noteHinweis

Namenlose, auch ordinal genannte, Parameter werden nicht von der .NET Framework-Datenanbieter für SQL Server unterstützt.

Das folgende Beispiel erstellt eine SqlConnection, ein SqlCommand, und ein SqlDataReader. Im Beispiel gelesen und die Daten, die sie in die Konsole geschrieben. Im Beispiel zum Schluss schließt die SqlDataReader und dann die SqlConnection wie er beendet wird die Using Codeblöcke.

private static void ReadOrderData(string connectionString)
{
    string queryString = 
        "SELECT OrderID, CustomerID FROM dbo.Orders;";
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        SqlCommand command = new SqlCommand(
            queryString, connection);
        connection.Open();
        SqlDataReader reader = command.ExecuteReader();
        try
        {
            while (reader.Read())
            {
                Console.WriteLine(String.Format("{0}, {1}",
                    reader[0], reader[1]));
            }
        }
        finally
        {
            // Always call Close when done reading.
            reader.Close();
        }
    }
}

Das folgende Beispiel veranschaulicht das Erstellen und Ausführen von verschiedenen Typen von SqlCommand-Objekten.

Zunächst müssen Sie die Beispieldatenbank erstellen, durch das folgende Skript ausführen:

USE [master]
GO

CREATE DATABASE [MySchool]
GO

USE [MySchool]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE procedure [dbo].[CourseExtInfo] @CourseId int
as
select c.CourseID,c.Title,c.Credits,d.Name as DepartmentName
from Course as c left outer join Department as d on c.DepartmentID=d.DepartmentID
where c.CourseID=@CourseId

GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[DepartmentInfo] @DepartmentId int,@CourseCount int output
as
select @CourseCount=Count(c.CourseID)
from course as c
where c.DepartmentID=@DepartmentId

select d.DepartmentID,d.Name,d.Budget,d.StartDate,d.Administrator
from Department as d
where d.DepartmentID=@DepartmentId

GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE [dbo].[GetDepartmentsOfSpecifiedYear] 
@Year int,@BudgetSum money output
AS
BEGIN
        SELECT @BudgetSum=SUM([Budget])
  FROM [MySchool].[dbo].[Department]
  Where YEAR([StartDate])=@Year 

SELECT [DepartmentID]
      ,[Name]
      ,[Budget]
      ,[StartDate]
      ,[Administrator]
  FROM [MySchool].[dbo].[Department]
  Where YEAR([StartDate])=@Year

END
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Course](
[CourseID] [nvarchar](10) NOT NULL,
[Year] [smallint] NOT NULL,
[Title] [nvarchar](100) NOT NULL,
[Credits] [int] NOT NULL,
[DepartmentID] [int] NOT NULL,
 CONSTRAINT [PK_Course] PRIMARY KEY CLUSTERED 
(
[CourseID] ASC,
[Year] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Department](
[DepartmentID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[Budget] [money] NOT NULL,
[StartDate] [datetime] NOT NULL,
[Administrator] [int] NULL,
 CONSTRAINT [PK_Department] PRIMARY KEY CLUSTERED 
(
[DepartmentID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Person](
[PersonID] [int] IDENTITY(1,1) NOT NULL,
[LastName] [nvarchar](50) NOT NULL,
[FirstName] [nvarchar](50) NOT NULL,
[HireDate] [datetime] NULL,
[EnrollmentDate] [datetime] NULL,
 CONSTRAINT [PK_School.Student] PRIMARY KEY CLUSTERED 
(
[PersonID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[StudentGrade](
[EnrollmentID] [int] IDENTITY(1,1) NOT NULL,
[CourseID] [nvarchar](10) NOT NULL,
[StudentID] [int] NOT NULL,
[Grade] [decimal](3, 2) NOT NULL,
 CONSTRAINT [PK_StudentGrade] PRIMARY KEY CLUSTERED 
(
[EnrollmentID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create view [dbo].[EnglishCourse]
as
select c.CourseID,c.Title,c.Credits,c.DepartmentID
from Course as c join Department as d on c.DepartmentID=d.DepartmentID
where d.Name=N'English'

GO
INSERT [dbo].[Course] ([CourseID], [Year], [Title], [Credits], [DepartmentID]) VALUES (N'C1045', 2012, N'Calculus', 4, 7)
INSERT [dbo].[Course] ([CourseID], [Year], [Title], [Credits], [DepartmentID]) VALUES (N'C1061', 2012, N'Physics', 4, 1)
INSERT [dbo].[Course] ([CourseID], [Year], [Title], [Credits], [DepartmentID]) VALUES (N'C2021', 2012, N'Composition', 3, 2)
INSERT [dbo].[Course] ([CourseID], [Year], [Title], [Credits], [DepartmentID]) VALUES (N'C2042', 2012, N'Literature', 4, 2)
SET IDENTITY_INSERT [dbo].[Department] ON 

INSERT [dbo].[Department] ([DepartmentID], [Name], [Budget], [StartDate], [Administrator]) VALUES (1, N'Engineering', 350000.0000, CAST(0x0000999C00000000 AS DateTime), 2)
INSERT [dbo].[Department] ([DepartmentID], [Name], [Budget], [StartDate], [Administrator]) VALUES (2, N'English', 120000.0000, CAST(0x0000999C00000000 AS DateTime), 6)
INSERT [dbo].[Department] ([DepartmentID], [Name], [Budget], [StartDate], [Administrator]) VALUES (4, N'Economics', 200000.0000, CAST(0x0000999C00000000 AS DateTime), 4)
INSERT [dbo].[Department] ([DepartmentID], [Name], [Budget], [StartDate], [Administrator]) VALUES (7, N'Mathematics', 250024.0000, CAST(0x0000999C00000000 AS DateTime), 3)
SET IDENTITY_INSERT [dbo].[Department] OFF
SET IDENTITY_INSERT [dbo].[Person] ON 

INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (1, N'Hu', N'Nan', NULL, CAST(0x0000A0BF00000000 AS DateTime))
INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (2, N'Norman', N'Laura', NULL, CAST(0x0000A0BF00000000 AS DateTime))
INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (3, N'Olivotto', N'Nino', NULL, CAST(0x0000A0BF00000000 AS DateTime))
INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (4, N'Anand', N'Arturo', NULL, CAST(0x0000A0BF00000000 AS DateTime))
INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (5, N'Jai', N'Damien', NULL, CAST(0x0000A0BF00000000 AS DateTime))
INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (6, N'Holt', N'Roger', CAST(0x000097F100000000 AS DateTime), NULL)
INSERT [dbo].[Person] ([PersonID], [LastName], [FirstName], [HireDate], [EnrollmentDate]) VALUES (7, N'Martin', N'Randall', CAST(0x00008B1A00000000 AS DateTime), NULL)
SET IDENTITY_INSERT [dbo].[Person] OFF
SET IDENTITY_INSERT [dbo].[StudentGrade] ON 

INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (1, N'C1045', 1, CAST(3.50 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (2, N'C1045', 2, CAST(3.00 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (3, N'C1045', 3, CAST(2.50 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (4, N'C1045', 4, CAST(4.00 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (5, N'C1045', 5, CAST(3.50 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (6, N'C1061', 1, CAST(4.00 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (7, N'C1061', 3, CAST(3.50 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (8, N'C1061', 4, CAST(2.50 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (9, N'C1061', 5, CAST(1.50 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (10, N'C2021', 1, CAST(2.50 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (11, N'C2021', 2, CAST(3.50 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (12, N'C2021', 4, CAST(3.00 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (13, N'C2021', 5, CAST(3.00 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (14, N'C2042', 1, CAST(2.00 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (15, N'C2042', 2, CAST(3.50 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (16, N'C2042', 3, CAST(4.00 AS Decimal(3, 2)))
INSERT [dbo].[StudentGrade] ([EnrollmentID], [CourseID], [StudentID], [Grade]) VALUES (17, N'C2042', 5, CAST(3.00 AS Decimal(3, 2)))
SET IDENTITY_INSERT [dbo].[StudentGrade] OFF
ALTER TABLE [dbo].[Course]  WITH CHECK ADD  CONSTRAINT [FK_Course_Department] FOREIGN KEY([DepartmentID])
REFERENCES [dbo].[Department] ([DepartmentID])
GO
ALTER TABLE [dbo].[Course] CHECK CONSTRAINT [FK_Course_Department]
GO
ALTER TABLE [dbo].[StudentGrade]  WITH CHECK ADD  CONSTRAINT [FK_StudentGrade_Student] FOREIGN KEY([StudentID])
REFERENCES [dbo].[Person] ([PersonID])
GO
ALTER TABLE [dbo].[StudentGrade] CHECK CONSTRAINT [FK_StudentGrade_Student]
GO

Als Nächstes kompilieren Sie und führen Sie Folgendes aus:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Threading.Tasks;

class Program {

   static class SqlHelper {
      // Set the connection, command, and then execute the command with non query.
      public static Int32 ExecuteNonQuery(String connectionString, String commandText,
          CommandType commandType, params SqlParameter[] parameters) {
         using (SqlConnection conn = new SqlConnection(connectionString)) {
            using (SqlCommand cmd = new SqlCommand(commandText, conn)) {
               // There're three command types: StoredProcedure, Text, TableDirect. The TableDirect 
               // type is only for OLE DB.  
               cmd.CommandType = commandType;
               cmd.Parameters.AddRange(parameters);

               conn.Open();
               return cmd.ExecuteNonQuery();
            }
         }
      }

      // Set the connection, command, and then execute the command and only return one value.
      public static Object ExecuteScalar(String connectionString, String commandText,
          CommandType commandType, params SqlParameter[] parameters) {
         using (SqlConnection conn = new SqlConnection(connectionString)) {
            using (SqlCommand cmd = new SqlCommand(commandText, conn)) {
               cmd.CommandType = commandType;
               cmd.Parameters.AddRange(parameters);

               conn.Open();
               return cmd.ExecuteScalar();
            }
         }
      }

      // Set the connection, command, and then execute the command with query and return the reader.
      public static SqlDataReader ExecuteReader(String connectionString, String commandText,
          CommandType commandType, params SqlParameter[] parameters) {
         SqlConnection conn = new SqlConnection(connectionString);

         using (SqlCommand cmd = new SqlCommand(commandText, conn)) {
            cmd.CommandType = commandType;
            cmd.Parameters.AddRange(parameters);

            conn.Open();
            // When using CommandBehavior.CloseConnection, the connection will be closed when the 
            // IDataReader is closed.
            SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

            return reader;
         }
      }
   }

   static void Main(string[] args) {
      String connectionString = "Data Source=(local);Initial Catalog=MySchool;Integrated Security=True;Asynchronous Processing=true;";

      CountCourses(connectionString, 2012);
      Console.WriteLine();

      Console.WriteLine("Following result is the departments that started from 2007:");
      GetDepartments(connectionString, 2007);
      Console.WriteLine();

      Console.WriteLine("Add the credits when the credits of course is lower than 4.");
      AddCredits(connectionString, 4);
      Console.WriteLine();

      Console.WriteLine("Please press any key to exit...");
      Console.ReadKey();
   }

   static void CountCourses(String connectionString, Int32 year) {
      String commandText = "Select Count([CourseID]) FROM [MySchool].[dbo].[Course] Where Year=@Year";
      SqlParameter parameterYear = new SqlParameter("@Year", SqlDbType.Int);
      parameterYear.Value = year;

      Object oValue = SqlHelper.ExecuteScalar(connectionString, commandText, CommandType.Text, parameterYear);
      Int32 count;
      if (Int32.TryParse(oValue.ToString(), out count))
         Console.WriteLine("There {0} {1} course{2} in {3}.", count > 1 ? "are" : "is", count, count > 1 ? "s" : null, year);
   }

   // Display the Departments that start from the specified year.
   static void GetDepartments(String connectionString, Int32 year) {
      String commandText = "dbo.GetDepartmentsOfSpecifiedYear";

      // Specify the year of StartDate
      SqlParameter parameterYear = new SqlParameter("@Year", SqlDbType.Int);
      parameterYear.Value = year;

      // When the direction of parameter is set as Output, you can get the value after 
      // executing the command.
      SqlParameter parameterBudget = new SqlParameter("@BudgetSum", SqlDbType.Money);
      parameterBudget.Direction = ParameterDirection.Output;

      using (SqlDataReader reader = SqlHelper.ExecuteReader(connectionString, commandText,
          CommandType.StoredProcedure, parameterYear, parameterBudget)) {
         Console.WriteLine("{0,-20}{1,-20}{2,-20}{3,-20}", "Name", "Budget", "StartDate",
             "Administrator");
         while (reader.Read()) {
            Console.WriteLine("{0,-20}{1,-20:C}{2,-20:d}{3,-20}", reader["Name"],
                reader["Budget"], reader["StartDate"], reader["Administrator"]);
         }
      }
      Console.WriteLine("{0,-20}{1,-20:C}", "Sum:", parameterBudget.Value);
   }

   // If credits of course is lower than the certain value, the method will add the credits.
   static void AddCredits(String connectionString, Int32 creditsLow) {
      String commandText = "Update [MySchool].[dbo].[Course] Set Credits=Credits+1 Where Credits<@Credits";

      SqlParameter parameterCredits = new SqlParameter("@Credits", creditsLow);

      Int32 rows = SqlHelper.ExecuteNonQuery(connectionString, commandText, CommandType.Text, parameterCredits);

      Console.WriteLine("{0} row{1} {2} updated.", rows, rows > 1 ? "s" : null, rows > 1 ? "are" : "is");
   }
}

.NET Framework
Verfügbar seit 1.1

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Zurück zum Anfang
Anzeigen: