この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

SqlCommand クラス

 

公開日: 2016年10月

SQL Server データベースに対して実行する Transact-SQL ステートメントまたはストアド プロシージャを表します。 このクラスは継承できません。

名前空間:   System.Data.SqlClient
アセンブリ:  System.Data (System.Data.dll 内)

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

public sealed class SqlCommand : DbCommand, ICloneable

名前説明
System_CAPS_pubmethodSqlCommand()

SqlCommand クラスの新しいインスタンスを初期化します。

System_CAPS_pubmethodSqlCommand(String)

クエリ テキストを指定して、SqlCommand クラスの新しいインスタンスを初期化します。

System_CAPS_pubmethodSqlCommand(String, SqlConnection)

クエリ テキストと SqlConnection を指定して、SqlCommand クラスの新しいインスタンスを初期化します。

System_CAPS_pubmethodSqlCommand(String, SqlConnection, SqlTransaction)

クエリのテキスト、SqlConnection、および SqlTransaction を指定して、SqlCommand クラスの新しいインスタンスを初期化します。

System_CAPS_pubmethodSqlCommand(String, SqlConnection, SqlTransaction, SqlCommandColumnEncryptionSetting)

指定されたコマンド テキスト、接続、トランザクション、暗号化の設定で、SqlCommand クラスの新しいインスタンスを初期化します。

名前説明
System_CAPS_pubpropertyColumnEncryptionSetting

このコマンドの列の暗号化の設定を取得または設定します。

System_CAPS_pubpropertyCommandText

データ ソースで実行する Transact-SQL ステートメント、テーブル名、またはストアド プロシージャを取得または設定します。(DbCommand.CommandText をオーバーライドします。)

System_CAPS_pubpropertyCommandTimeout

コマンドを実行する試みを終了してエラーが生成されるまでの待機時間を取得または設定します。(DbCommand.CommandTimeout をオーバーライドします。)

System_CAPS_pubpropertyCommandType

CommandText プロパティの解釈方法を示す値を取得または設定します。(DbCommand.CommandType をオーバーライドします。)

System_CAPS_pubpropertyConnection

この SqlCommand のインスタンスで使用する SqlConnection を取得または設定します。

System_CAPS_pubpropertyContainer

取得、 IContainer を含む、 Componentです。(Component から継承されます。)

System_CAPS_pubpropertyDesignTimeVisible

コマンド オブジェクトを Windows フォーム デザイナー コントロールに表示する必要があるかどうかを示す値を取得または設定します。(DbCommand.DesignTimeVisible をオーバーライドします。)

System_CAPS_pubpropertyNotification

このコマンドにバインドされた SqlNotificationRequest オブジェクトを指定する値を取得または設定します。

System_CAPS_pubpropertyNotificationAutoEnlist

共通 SqlDependency オブジェクトからのクエリ通知をアプリケーションで自動的に受信するかどうかを示す値を取得または設定します。

System_CAPS_pubpropertyParameters

SqlParameterCollection を取得します。

System_CAPS_pubpropertySite

取得または設定、 ISiteComponentです。(Component から継承されます。)

System_CAPS_pubpropertyTransaction

SqlTransaction が実行される SqlCommand を取得または設定します。

System_CAPS_pubpropertyUpdatedRowSource

DbDataAdapterUpdate メソッドで使用するときに、コマンドの結果を DataRow に適用する方法を取得または設定します。(DbCommand.UpdatedRowSource をオーバーライドします。)

名前説明
System_CAPS_pubmethodBeginExecuteNonQuery()

この SqlCommand によって定義された Transact-SQL ステートメントまたはストアド プロシージャの非同期実行を開始します。

System_CAPS_pubmethodBeginExecuteNonQuery(AsyncCallback, Object)

引数に指定されたコールバック プロシージャと状態情報に基づき、この SqlCommand によって定義された Transact-SQL ステートメントまたはストアド プロシージャの非同期実行を開始します。

System_CAPS_pubmethodBeginExecuteReader()

この SqlCommand で定義された Transact-SQL ステートメントまたはストアド プロシージャの非同期実行を開始し、サーバーから 1 つ以上の結果セットを取得します。

System_CAPS_pubmethodBeginExecuteReader(AsyncCallback, Object)

この SqlCommand によって定義された Transact-SQL ステートメントまたはストアド プロシージャの非同期実行を開始し、引数に指定されたコールバック プロシージャと状態情報に基づき、サーバーから 1 つまたは複数の結果を取得します。

System_CAPS_pubmethodBeginExecuteReader(AsyncCallback, Object, CommandBehavior)

引数に指定されたコールバック プロシージャと状態情報に基づき、CommandBehavior 値の 1 つを使用し、サーバーから 1 つまたは複数の結果セットを取得して、この SqlCommand によって記述された Transact-SQL ステートメントまたはストアド プロシージャの非同期実行を開始します。

System_CAPS_pubmethodBeginExecuteReader(CommandBehavior)

CommandBehavior のいずれかの値を使用し、この SqlCommand によって定義された Transact-SQL ステートメントまたはストアド プロシージャの非同期実行を開始します。

System_CAPS_pubmethodBeginExecuteXmlReader()

この SqlCommand によって定義された Transact-SQL ステートメントまたはストアド プロシージャの非同期実行を開始し、結果を XmlReader オブジェクトとして返します。

System_CAPS_pubmethodBeginExecuteXmlReader(AsyncCallback, Object)

この SqlCommand によって定義された Transact-SQL ステートメントまたはストアド プロシージャの非同期実行を開始し、コールバック プロシージャを使用して結果を XmlReader オブジェクトとして返します。

System_CAPS_pubmethodCancel()

SqlCommand の実行の取り消しを試行します。(DbCommand.Cancel() をオーバーライドします。)

System_CAPS_pubmethodClone()

現在のインスタンスのコピーである新しい SqlCommand オブジェクトを作成します。

System_CAPS_pubmethodCreateObjRef(Type)

リモート オブジェクトと通信するために使用するプロキシを生成するために必要なすべての関連情報を格納しているオブジェクトを作成します。(MarshalByRefObject から継承されます。)

System_CAPS_pubmethodCreateParameter()

SqlParameter オブジェクトの新しいインスタンスを作成します。

System_CAPS_pubmethodDispose()

Component によって使用されているすべてのリソースを解放します。(Component から継承されます。)

System_CAPS_pubmethodEndExecuteNonQuery(IAsyncResult)

Transact-SQL ステートメントの非同期実行を完了します。

System_CAPS_pubmethodEndExecuteReader(IAsyncResult)

Transact-SQL ステートメントの非同期実行を完了し、要求された SqlDataReader を返します。

System_CAPS_pubmethodEndExecuteXmlReader(IAsyncResult)

Transact-SQL ステートメントの非同期実行を完了し、要求されたデータを XML として返します。

System_CAPS_pubmethodEquals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。(Object から継承されます。)

System_CAPS_pubmethodExecuteNonQuery()

接続に対して Transact-SQL ステートメントを実行し、影響を受けた行数を返します。(DbCommand.ExecuteNonQuery() をオーバーライドします。)

System_CAPS_pubmethodExecuteNonQueryAsync()

非同期バージョンの ExecuteNonQuery, 、接続オブジェクトに対して SQL ステートメントを実行します。

呼び出す ExecuteNonQueryAsync CancellationToken.None とします。(DbCommand から継承されます。)

System_CAPS_pubmethodExecuteNonQueryAsync(CancellationToken)

接続に対して Transact-SQL ステートメントを実行し、影響を受ける行の数を返す ExecuteNonQuery の非同期バージョン。 キャンセル トークンを使用すると、コマンド タイムアウトが経過する前に操作を破棄することを要求できます。 例外は、返されたタスク オブジェクトによって報告されます。(DbCommand.ExecuteNonQueryAsync(CancellationToken) をオーバーライドします。)

System_CAPS_pubmethodExecuteReader()

CommandTextConnection に送信し、SqlDataReader を構築します。

System_CAPS_pubmethodExecuteReader(CommandBehavior)

CommandTextConnection に送信し、CommandBehavior 値のいずれかを使用して SqlDataReader を構築します。

System_CAPS_pubmethodExecuteReaderAsync()

CommandTextConnection を送信し、SqlDataReader を構築する、ExecuteReader の非同期バージョン。 例外は、返されたタスク オブジェクトによって報告されます。

System_CAPS_pubmethodExecuteReaderAsync(CancellationToken)

CommandTextConnection を送信し SqlDataReader を構築する、ExecuteReader の非同期バージョン。

キャンセル トークンを使用すると、コマンド タイムアウトが経過する前に操作を破棄することを要求できます。 例外は、返されたタスク オブジェクトによって報告されます。

System_CAPS_pubmethodExecuteReaderAsync(CommandBehavior)

CommandTextConnection を送信し SqlDataReader を構築する、ExecuteReader の非同期バージョン。 例外は、返されたタスク オブジェクトによって報告されます。

System_CAPS_pubmethodExecuteReaderAsync(CommandBehavior, CancellationToken)

CommandTextConnection を送信し、SqlDataReader を構築する、ExecuteReader の非同期バージョン。

キャンセル トークンを使用すると、コマンド タイムアウトが経過する前に操作を破棄することを要求できます。 例外は、返されたタスク オブジェクトによって報告されます。

System_CAPS_pubmethodExecuteScalar()

クエリを実行し、そのクエリが返す結果セットの最初の行にある最初の列を返します。 以降の列または行は無視されます。(DbCommand.ExecuteScalar() をオーバーライドします。)

System_CAPS_pubmethodExecuteScalarAsync()

非同期バージョンの ExecuteScalar, 、するクエリを実行し、クエリによって返される結果セット内の最初の行の最初の列を返します。 その他のすべての列と行は無視されます。

呼び出す ExecuteScalarAsync CancellationToken.None とします。(DbCommand から継承されます。)

System_CAPS_pubmethodExecuteScalarAsync(CancellationToken)

クエリを非同期で実行し、クエリで返された結果セットの最初の行の最初の列を返す ExecuteScalar の非同期バージョン。 以降の列または行は無視されます。

キャンセル トークンを使用すると、コマンド タイムアウトが経過する前に操作を破棄することを要求できます。 例外は、返されたタスク オブジェクトによって報告されます。(DbCommand.ExecuteScalarAsync(CancellationToken) をオーバーライドします。)

System_CAPS_pubmethodExecuteXmlReader()

CommandTextConnection に送信し、XmlReader オブジェクトを構築します。

System_CAPS_pubmethodExecuteXmlReaderAsync()

ConnectionCommandText を送信し、XmlReader オブジェクトを構築する ExecuteXmlReader の非同期バージョン。

例外は、返されたタスク オブジェクトによって報告されます。

System_CAPS_pubmethodExecuteXmlReaderAsync(CancellationToken)

ConnectionCommandText を送信し、XmlReader オブジェクトを構築する ExecuteXmlReader の非同期バージョン。

キャンセル トークンを使用すると、コマンド タイムアウトが経過する前に操作を破棄するように要求できます。 例外は、返されたタスク オブジェクトによって報告されます。

System_CAPS_pubmethodGetHashCode()

既定のハッシュ関数として機能します。(Object から継承されます。)

System_CAPS_pubmethodGetLifetimeService()

このインスタンスの有効期間ポリシーを制御する現在の有効期間サービス オブジェクトを取得します。(MarshalByRefObject から継承されます。)

System_CAPS_pubmethodGetType()

現在のインスタンスの Type を取得します。(Object から継承されます。)

System_CAPS_pubmethodInitializeLifetimeService()

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。(MarshalByRefObject から継承されます。)

System_CAPS_pubmethodPrepare()

SQL Server のインスタンスに準備されたバージョンのコマンドを作成します。(DbCommand.Prepare() をオーバーライドします。)

System_CAPS_pubmethodResetCommandTimeout()

CommandTimeout プロパティを既定値にリセットします。

System_CAPS_pubmethodToString()

返します。、 String の名前を含む、 Component, 、存在する場合。 このメソッドはオーバーライドできません。(Component から継承されます。)

名前説明
System_CAPS_pubeventDisposed

呼び出しによってコンポーネントが破棄されるときに発生、 Dispose メソッドです。(Component から継承されます。)

System_CAPS_pubeventStatementCompleted

Transact-SQL ステートメントの実行が完了すると発生します。

名前説明
System_CAPS_pubinterfaceSystem_CAPS_privmethodIDbCommand.CreateParameter()

IDbDataParameter オブジェクトの新しいインスタンスを作成します。(DbCommand から継承されます。)

System_CAPS_pubinterfaceSystem_CAPS_privmethodIDbCommand.ExecuteReader()

Connection に対して CommandText を実行し、IDataReader をビルドします。(DbCommand から継承されます。)

System_CAPS_pubinterfaceSystem_CAPS_privmethodIDbCommand.ExecuteReader(CommandBehavior)

Connection に対して CommandText を実行し、CommandBehavior の値のいずれかを使用して IDataReader をビルドします。(DbCommand から継承されます。)

System_CAPS_pubinterfaceSystem_CAPS_privmethodICloneable.Clone()

現在のインスタンスのコピーである新しい SqlCommand オブジェクトを作成します。

System_CAPS_pubinterfaceSystem_CAPS_privpropertyIDbCommand.Connection

この IDbCommand のインスタンスで使用する IDbConnection を取得または設定します。(DbCommand から継承されます。)

System_CAPS_pubinterfaceSystem_CAPS_privpropertyIDbCommand.Parameters

IDataParameterCollection を取得します。(DbCommand から継承されます。)

System_CAPS_pubinterfaceSystem_CAPS_privpropertyIDbCommand.Transaction

この DbCommand オブジェクトが実行される DbTransaction を取得または設定します。(DbCommand から継承されます。)

When an instance of T:System.Data.SqlClient.SqlCommand is created, the read/write properties are set to their initial values. For a list of these values, see the T:System.Data.SqlClient.SqlCommand constructor.

SqlCommand features the following methods for executing commands at a SQL Server database:

Item

Description

BeginExecuteNonQuery

Initiates the asynchronous execution of the Transact-SQL statement or stored procedure that is described by this T:System.Data.SqlClient.SqlCommand, generally executing commands such as INSERT, DELETE, UPDATE, and SET statements. Each call to M:System.Data.SqlClient.SqlCommand.BeginExecuteNonQuery must be paired with a call to M:System.Data.SqlClient.SqlCommand.EndExecuteNonQuery(System.IAsyncResult) which finishes the operation, typically on a separate thread.

BeginExecuteReader

Initiates the asynchronous execution of the Transact-SQL statement or stored procedure that is described by this T:System.Data.SqlClient.SqlCommand and retrieves one or more results sets from the server. Each call to M:System.Data.SqlClient.SqlCommand.BeginExecuteReader must be paired with a call to M:System.Data.SqlClient.SqlCommand.EndExecuteReader(System.IAsyncResult) which finishes the operation, typically on a separate thread.

BeginExecuteXmlReader

Initiates the asynchronous execution of the Transact-SQL statement or stored procedure that is described by this T:System.Data.SqlClient.SqlCommand. Each call to BeginExecuteXmlReader must be paired with a call to EndExecuteXmlReader, which finishes the operation, typically on a separate thread, and returns an T:System.Xml.XmlReader object.

ExecuteReader

Executes commands that return rows. For increased performance, M:System.Data.SqlClient.SqlCommand.ExecuteReader invokes commands using the Transact-SQL sp_executesql system stored procedure. Therefore, M:System.Data.SqlClient.SqlCommand.ExecuteReader might not have the effect that you want if used to execute commands such as Transact-SQL SET statements.

ExecuteNonQuery

Executes commands such as Transact-SQL INSERT, DELETE, UPDATE, and SET statements.

ExecuteScalar

Retrieves a single value (for example, an aggregate value) from a database.

ExecuteXmlReader

Sends the P:System.Data.SqlClient.SqlCommand.CommandText to the P:System.Data.SqlClient.SqlCommand.Connection and builds an T:System.Xml.XmlReader object.

You can reset the P:System.Data.SqlClient.SqlCommand.CommandText property and reuse the T:System.Data.SqlClient.SqlCommand object. However, you must close the T:System.Data.SqlClient.SqlDataReader before you can execute a new or previous command.

If a T:System.Data.SqlClient.SqlException is generated by the method executing a T:System.Data.SqlClient.SqlCommand, the T:System.Data.SqlClient.SqlConnection remains open when the severity level is 19 or less. When the severity level is 20 or greater, the server ordinarily closes the T:System.Data.SqlClient.SqlConnection. However, the user can reopen the connection and continue.

System_CAPS_noteメモ

Nameless, also called ordinal, parameters are not supported by the .NET Framework Data Provider for SQL Server.

The following example creates a T:System.Data.SqlClient.SqlConnection, a T:System.Data.SqlClient.SqlCommand, and a T:System.Data.SqlClient.SqlDataReader. The example reads through the data, writing it to the console. Finally, the example closes the T:System.Data.SqlClient.SqlDataReader and then the T:System.Data.SqlClient.SqlConnection as it exits the Using code blocks.

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();
        }
    }
}

The following sample shows how to create and execute different types of SqlCommand objects.

First you must create the sample database, by executing the following script:

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

Next, compile and execute the following:

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
1.1 以降で使用可能

この型のパブリック static (Visual Basic では Shared ) メンバーはスレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

トップに戻る
表示: