ADO.NETコード例

27438 ワード

回転元:http://msdn.microsoft.com/zh-cn/library/dw70f090
 
このトピックのコード・リストでは、次のADO.NETテクノロジーを使用してデータベースからデータを取得する方法を示します.
  • ADO.NETデータプロバイダ:
  • SQL Server.NET Frameworkデータプロバイダ  (System.Data.SqlClient)
  • OLE DB.NET Frameworkデータプロバイダ  (System.Data.OleDb)
  • ODBC.NET Frameworkデータプロバイダ  (System.Data.Odbc)
  • Oracle.NET Frameworkデータプロバイダ  (System.Data.OracleClient)

  • ADO.NETエンティティフレーム:
  • LINQ to Entities
  • タイプ化ObjectQuery
  • EntityClientデータプロバイダ  (System.Data.EntityClient)

  • LINQ to SQL

  • ADO.NETデータプロバイダの例
    次のコード・リストでは、ADO.NETデータ・プロバイダを使用してデータベースからデータを取得する方法を示します. データは1つ DataReader に表示されます. 詳細については、DataReaderを使用したデータの取得を参照してください.
    dw70f090.collapse_all(zh-cn,VS.110).gif SqlClient
    この例のコードは、Microsoft SQLサーバの Northwind サンプル・データベース. このシナリオ5では、サンプルコードが1つ作成される  SqlCommand  Productsテーブルから行を選択し、SqlParameterを追加します. をクリックして、UnitPriceが指定したパラメータ値より大きい行に制限します.  SqlConnection  にある using ブロック内が開き、コードが終了するとリソースが閉じられ、解放されることを保証します. サンプルコードSqlDataReader コマンドを実行し、結果をコンソールウィンドウに表示します.
    C#
    VB
     
    using System;
    
    using System.Data;
    
    using System.Data.SqlClient;
    
    
    
    class Program
    
    {
    
        static void Main()
    
        {
    
            string connectionString =
    
                "Data Source=(local);Initial Catalog=Northwind;"
    
                + "Integrated Security=true";
    
    
    
            // Provide the query string with a parameter placeholder.
    
            string queryString =
    
                "SELECT ProductID, UnitPrice, ProductName from dbo.products "
    
                    + "WHERE UnitPrice > @pricePoint "
    
                    + "ORDER BY UnitPrice DESC;";
    
    
    
            // Specify the parameter value.
    
            int paramValue = 5;
    
    
    
            // Create and open the connection in a using block. This
    
            // ensures that all resources will be closed and disposed
    
            // when the code exits.
    
            using (SqlConnection connection =
    
                new SqlConnection(connectionString))
    
            {
    
                // Create the Command and Parameter objects.
    
                SqlCommand command = new SqlCommand(queryString, connection);
    
                command.Parameters.AddWithValue("@pricePoint", paramValue);
    
    
    
                // Open the connection in a try/catch block. 
    
                // Create and execute the DataReader, writing the result
    
                // set to the console window.
    
                try
    
                {
    
                    connection.Open();
    
                    SqlDataReader reader = command.ExecuteReader();
    
                    while (reader.Read())
    
                    {
    
                        Console.WriteLine("\t{0}\t{1}\t{2}",
    
                            reader[0], reader[1], reader[2]);
    
                    }
    
                    reader.Close();
    
                }
    
                catch (Exception ex)
    
                {
    
                    Console.WriteLine(ex.Message);
    
                }
    
                Console.ReadLine();
    
            }
    
        }
    
    
    
    
    
    

    [先頭に戻る]
    dw70f090.collapse_all(zh-cn,VS.110).gif OleDb
    この例のコードは、Microsoft Access Northwindサンプル・データベースに接続できると仮定します. このシナリオ5では、サンプルコードが1つ作成される  OleDbCommand  Productsテーブルから行を選択し、OleDbParameterを追加します. をクリックして、UnitPriceが指定したパラメータ値より大きい行に制限します.  OleDbConnection  にある using ブロック内が開き、コードが終了するとリソースが閉じられ、解放されることを保証します. サンプルコードOleDbDataReader コマンドを実行し、結果をコンソールウィンドウに表示します.
    C#
    VB
     
    using System;
    
    using System.Data;
    
    using System.Data.OleDb;
    
    
    
    class Program
    
    {
    
        static void Main()
    
        {
    
            // The connection string assumes that the Access 
    
            // Northwind.mdb is located in the c:\Data folder.
    
            string connectionString =
    
            "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    
                + "c:\\Data\\Northwind.mdb;User Id=admin;Password=;";
    
    
    
            // Provide the query string with a parameter placeholder.
    
            string queryString =
    
                "SELECT ProductID, UnitPrice, ProductName from products "
    
                    + "WHERE UnitPrice > ? "
    
                    + "ORDER BY UnitPrice DESC;";
    
    
    
            // Specify the parameter value.
    
            int paramValue = 5;
    
    
    
            // Create and open the connection in a using block. This
    
            // ensures that all resources will be closed and disposed
    
            // when the code exits.
    
            using (OleDbConnection connection =
    
                new OleDbConnection(connectionString))
    
            {
    
                // Create the Command and Parameter objects.
    
                OleDbCommand command = new OleDbCommand(queryString, connection);
    
                command.Parameters.AddWithValue("@pricePoint", paramValue);
    
    
    
                // Open the connection in a try/catch block. 
    
                // Create and execute the DataReader, writing the result
    
                // set to the console window.
    
                try
    
                {
    
                    connection.Open();
    
                    OleDbDataReader reader = command.ExecuteReader();
    
                    while (reader.Read())
    
                    {
    
                        Console.WriteLine("\t{0}\t{1}\t{2}",
    
                            reader[0], reader[1], reader[2]);
    
                    }
    
                    reader.Close();
    
                }
    
                catch (Exception ex)
    
                {
    
                    Console.WriteLine(ex.Message);
    
                }
    
                Console.ReadLine();
    
            }
    
        }
    
    
    
    
    
    

    [先頭に戻る]
    dw70f090.collapse_all(zh-cn,VS.110).gif Odbc
    この例のコードは、Microsoft Access Northwindサンプル・データベースに接続できると仮定します. このシナリオ5では、サンプルコードが1つ作成される  OdbcCommand  Productsテーブルから行を選択し、OdbcParameterを追加します. をクリックして、UnitPriceが指定したパラメータ値より大きい行に制限します.  OdbcConnection  にある using ブロック内が開き、コードが終了するとリソースが閉じられ、解放されることを保証します. サンプルコードOdbcDataReader コマンドを実行し、結果をコンソールウィンドウに表示します.
    C#
    VB
     
    using System;
    
    using System.Data;
    
    using System.Data.Odbc;
    
    
    
    class Program
    
    {
    
        static void Main()
    
        {
    
            // The connection string assumes that the Access 
    
            // Northwind.mdb is located in the c:\Data folder.
    
            string connectionString =
    
                "Driver={Microsoft Access Driver (*.mdb)};"
    
                + "Dbq=c:\\Data\\Northwind.mdb;Uid=Admin;Pwd=;";
    
    
    
            // Provide the query string with a parameter placeholder.
    
            string queryString =
    
                "SELECT ProductID, UnitPrice, ProductName from products "
    
                    + "WHERE UnitPrice > ? "
    
                    + "ORDER BY UnitPrice DESC;";
    
    
    
            // Specify the parameter value.
    
            int paramValue = 5;
    
    
    
            // Create and open the connection in a using block. This
    
            // ensures that all resources will be closed and disposed
    
            // when the code exits.
    
            using (OdbcConnection connection =
    
                new OdbcConnection(connectionString))
    
            {
    
                // Create the Command and Parameter objects.
    
                OdbcCommand command = new OdbcCommand(queryString, connection);
    
                command.Parameters.AddWithValue("@pricePoint", paramValue);
    
    
    
                // Open the connection in a try/catch block. 
    
                // Create and execute the DataReader, writing the result
    
                // set to the console window.
    
                try
    
                {
    
                    connection.Open();
    
                    OdbcDataReader reader = command.ExecuteReader();
    
                    while (reader.Read())
    
                    {
    
                        Console.WriteLine("\t{0}\t{1}\t{2}",
    
                            reader[0], reader[1], reader[2]);
    
                    }
    
                    reader.Close();
    
                }
    
                catch (Exception ex)
    
                {
    
                    Console.WriteLine(ex.Message);
    
                }
    
                Console.ReadLine();
    
            }
    
        }
    
    
    
    
    
    

    [先頭に戻る]
    dw70f090.collapse_all(zh-cn,VS.110).gif OracleClient
    この例のコードは、OracleサーバのDEMO.CASTOMERへの接続が確立されていると仮定します. System.Data.OracleClient.dllへの参照も追加する必要があります. サンプルコード  OracleDataReader  で行ないます.
    C#
    VB
     
    using System;
    
    using System.Data;
    
    using System.Data.OracleClient;
    
    
    
    class Program
    
    {
    
        static void Main()
    
        {
    
            string connectionString = 
    
                "Data Source=ThisOracleServer;Integrated Security=yes;";
    
            string queryString =
    
                "SELECT CUSTOMER_ID, NAME FROM DEMO.CUSTOMER";
    
            using (OracleConnection connection =
    
                       new OracleConnection(connectionString))
    
            {
    
                OracleCommand command = connection.CreateCommand();
    
                command.CommandText = queryString;
    
    
    
                try
    
                {
    
                    connection.Open();
    
    
    
                    OracleDataReader reader = command.ExecuteReader();
    
    
    
                    while (reader.Read())
    
                    {
    
                        Console.WriteLine("\t{0}\t{1}",
    
                            reader[0], reader[1]);
    
                    }
    
                    reader.Close();
    
                }
    
                catch (Exception ex)
    
                {
    
                    Console.WriteLine(ex.Message);
    
                }
    
            }
    
        }
    
    }
    
    
    
    
    
    

    [先頭に戻る]
    エンティティーフレームの例
    次のコード・リストでは、エンティティ・データ・モデル(EDM)のエンティティをクエリーしてデータ・ソースからデータを取得する方法を示します. これらの例では  Northwindモデル . 詳細については、エンティティーフレームワークの概要を参照してください.
    dw70f090.collapse_all(zh-cn,VS.110).gif LINQ to Entities
    この例のコードは、LINQクエリを使用してCategoriesオブジェクトとしてデータを返します.これらのオブジェクトは、CategoryIDおよびCategoryName属性のみを含む匿名タイプとして抽出されます. 詳細については、LINQ to Entities Overviewを参照してください.
     
     
    Option Explicit On
    
    Option Strict On
    
    
    
    Imports System
    
    Imports System.Linq
    
    Imports System.Data.Objects
    
    Imports NorthwindModel
    
    
    
    Class LinqSample
    
        Public Shared Sub ExecuteQuery()
    
            Using context As NorthwindEntities = New NorthwindEntities()
    
                Try
    
                    Dim query = From category In context.Categories _
    
                                Select New With _
    
                                { _
    
                                    .categoryID = category.CategoryID, _
    
                                    .categoryName = category.CategoryName _
    
                                }
    
    
    
                    For Each categoryInfo In query
    
                        Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", _
    
                            categoryInfo.categoryID, categoryInfo.categoryName)
    
                    Next
    
                Catch ex As Exception
    
                    Console.WriteLine(ex.Message)
    
                End Try
    
            End Using
    
        End Sub
    
    End Class
    
    

    C#で:
     
     
    using System;
    
    using System.Linq;
    
    using System.Data.Objects;
    
    using NorthwindModel;
    
    
    
    class LinqSample
    
    {
    
        public static void ExecuteQuery()
    
        {
    
            using (NorthwindEntities context = new NorthwindEntities())
    
            {
    
                try
    
                {
    
                    var query = from category in context.Categories
    
                                select new
    
                                {
    
                                    categoryID = category.CategoryID,
    
                                    categoryName = category.CategoryName
    
                                };
    
    
    
                    foreach (var categoryInfo in query)
    
                    {
    
                        Console.WriteLine("\t{0}\t{1}",
    
                            categoryInfo.categoryID, categoryInfo.categoryName);
    
                    }
    
                }
    
                catch (Exception ex)
    
                {
    
                    Console.WriteLine(ex.Message);
    
                }
    
            }
    
        }
    
    }
    
    

    [先頭に戻る]
    dw70f090.collapse_all(zh-cn,VS.110).gif型化ObjectQuery
    この例のコードの使用  ObjectQuery<T>  Categoriesオブジェクトとしてデータを返します. 詳細については、Object Queries (Entity Framework)を参照してください.
     
     
    Option Explicit On
    
    Option Strict On
    
    
    
    Imports System
    
    Imports System.Data.Objects
    
    Imports NorthwindModel
    
    
    
    Class ObjectQuerySample
    
        Public Shared Sub ExecuteQuery()
    
            Using context As NorthwindEntities = New NorthwindEntities()
    
                Dim categoryQuery As ObjectQuery(Of Categories) = context.Categories
    
    
    
                For Each category As Categories In _
    
                    categoryQuery.Execute(MergeOption.AppendOnly)
    
                    Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", _
    
                        category.CategoryID, category.CategoryName)
    
                Next
    
            End Using
    
        End Sub
    
    End Class
    
    

    C#で:
     
     
    using System;
    
    using System.Data.Objects;
    
    using NorthwindModel;
    
    
    
    class ObjectQuerySample
    
    {
    
        public static void ExecuteQuery()
    
        {
    
            using (NorthwindEntities context = new NorthwindEntities())
    
            {
    
                ObjectQuery<Categories> categoryQuery = context.Categories;
    
    
    
                foreach (Categories category in 
    
                    categoryQuery.Execute(MergeOption.AppendOnly))
    
                {
    
                    Console.WriteLine("\t{0}\t{1}",
    
                        category.CategoryID, category.CategoryName);
    
                }
    
            }
    
        }
    
    }
    
    

    [先頭に戻る]
    dw70f090.collapse_all(zh-cn,VS.110).gif EntityClient
    この例のコードの使用  EntityCommand  をクリックしてください. このクエリは、Categoriesエンティティタイプのインスタンスを示すレコードのリストを返します.  EntityDataReader  結果セットにアクセスするためのデータレコード. 詳細については、エンティティ・フレームワーク用EntityClientプロバイダを参照してください.
     
     
    Option Explicit On
    
    Option Strict On
    
    
    
    Imports System
    
    Imports System.Data
    
    Imports System.Data.Common
    
    Imports System.Data.EntityClient
    
    Imports NorthwindModel
    
    
    
    Class EntityClientSample
    
        Public Shared Sub ExecuteQuery()
    
            Dim queryString As String = _
    
                "SELECT c.CategoryID, c.CategoryName " & _
    
                    "FROM NorthwindEntities.Categories AS c"
    
    
    
            Using conn As EntityConnection = _
    
                New EntityConnection("name=NorthwindEntities")
    
    
    
                Try
    
                    conn.Open()
    
                    Using query As EntityCommand = _
    
                    New EntityCommand(queryString, conn)
    
                        Using rdr As DbDataReader = _
    
                            query.ExecuteReader(CommandBehavior.SequentialAccess)
    
                            While rdr.Read()
    
                                Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", _
    
                                                  rdr(0), rdr(1))
    
                            End While
    
                        End Using
    
                    End Using
    
                Catch ex As Exception
    
                    Console.WriteLine(ex.Message)
    
                End Try
    
            End Using 
    
        End Sub
    
    End Class
    
    

    C#"で
     
     
    using System;
    
    using System.Data;
    
    using System.Data.Common;
    
    using System.Data.EntityClient;
    
    using NorthwindModel;
    
    
    
    class EntityClientSample
    
    {
    
        public static void ExecuteQuery()
    
        {
    
            string queryString =
    
                @"SELECT c.CategoryID, c.CategoryName 
    
                    FROM NorthwindEntities.Categories AS c";
    
    
    
            using (EntityConnection conn =
    
                new EntityConnection("name=NorthwindEntities"))
    
            {
    
                try
    
                {
    
                    conn.Open();
    
                    using (EntityCommand query = new EntityCommand(queryString, conn))
    
                    {
    
                        using (DbDataReader rdr = 
    
                            query.ExecuteReader(CommandBehavior.SequentialAccess))
    
                        {
    
                            while (rdr.Read())
    
                            {
    
                                Console.WriteLine("\t{0}\t{1}", rdr[0], rdr[1]);
    
                            }
    
                        }
    
                    }
    
                }
    
                catch (Exception ex)
    
                {
    
                    Console.WriteLine(ex.Message);
    
                }
    
            }
    
        }
    
    }
    
    

    [先頭に戻る]
    LINQ to SQL
    この例のコードは、LINQクエリを使用してCategoriesオブジェクトとしてデータを返します.これらのオブジェクトは、CategoryIDおよびCategoryName属性のみを含む匿名タイプとして抽出されます. この例は、Northwindデータコンテキストに基づいています. 詳細については、はじめにを参照してください.
     
     
    Option Explicit On
    
    Option Strict On
    
    
    
    Imports System
    
    Imports System.Collections.Generic
    
    Imports System.Linq
    
    Imports System.Text
    
    Imports Northwind
    
    
    
    Class LinqSqlSample
    
        Public Shared Sub ExecuteQuery()
    
            Using db As NorthwindDataContext = New NorthwindDataContext()
    
                Try
    
                    Dim query = From category In db.Categories _
    
                                    Select New With _
    
                                    { _
    
                                        .categoryID = category.CategoryID, _
    
                                        .categoryName = category.CategoryName _
    
                                    }
    
    
    
                    For Each categoryInfo In query
    
                        Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", _
    
                                categoryInfo.categoryID, categoryInfo.categoryName)
    
                    Next
    
                Catch ex As Exception
    
                    Console.WriteLine(ex.Message)
    
                End Try
    
                End Using 
    
        End Sub
    
    End Class
    
    

    C#で:
     
     
    using System;
    
    using System.Collections.Generic;
    
    using System.Linq;
    
    using System.Text;
    
    using Northwind;
    
    
    
        class LinqSqlSample
    
        {
    
            public static void ExecuteQuery()
    
            {
    
                using (NorthwindDataContext db = new NorthwindDataContext())
    
                {
    
                    try
    
                    {
    
                        var query = from category in db.Categories
    
                                    select new
    
                                    {
    
                                        categoryID = category.CategoryID,
    
                                        categoryName = category.CategoryName
    
                                    };
    
    
    
                        foreach (var categoryInfo in query)
    
                        {
    
                            Console.WriteLine("vbTab {0} vbTab {1}",
    
                                categoryInfo.categoryID, categoryInfo.categoryName);
    
                        }
    
                    }
    
                    catch (Exception ex)
    
                    {
    
                        Console.WriteLine(ex.Message);
    
                    }
    
                }
    
            }
    
        }
    
    
    
    

    [先頭に戻る]
    「」を参照してください。
    コンセプト
    データ・アプリケーションの作成
    その他のリソース
    ADO.NETの概要
    ADO.NETでのデータの取得と変更
    Querying an Entity Data Model (Entity Framework Tasks)
    How to: Execute a Query that Returns an Anonymous Type (Entity Framework)
    ADO.NET管理プロバイダおよびDataSet開発者センター