Read column values as C# types using the 'Get' methods

image_pdfimage_print
   

using System;
using System.Data;
using System.Data.SqlClient;

class StronglyTypedColumnValues
{
  public static void Main()
  {
    SqlConnection mySqlConnection =new SqlConnection("server=(local)SQLEXPRESS;database=MyDatabase;Integrated Security=SSPI;");

    SqlCommand mySqlCommand = mySqlConnection.CreateCommand();

    mySqlCommand.CommandText = "SELECT TOP 5 ProductID, ProductName, UnitPrice, " +
      "UnitsInStock, Discontinued " +
      "FROM Products " +
      "ORDER BY ProductID";

    mySqlConnection.Open();

    SqlDataReader productsSqlDataReader = mySqlCommand.ExecuteReader();

    int productIDColPos = productsSqlDataReader.GetOrdinal("ProductID");
    int productNameColPos = productsSqlDataReader.GetOrdinal("ProductName");
    int unitPriceColPos = productsSqlDataReader.GetOrdinal("UnitPrice");
    int unitsInStockColPos = productsSqlDataReader.GetOrdinal("UnitsInStock");
    int discontinuedColPos = productsSqlDataReader.GetOrdinal("Discontinued");

    Console.WriteLine("ProductID .NET type = " + productsSqlDataReader.GetFieldType(productIDColPos));
    Console.WriteLine("ProductName .NET type = " + productsSqlDataReader.GetFieldType(productNameColPos));
    Console.WriteLine("UnitPrice .NET type = " + productsSqlDataReader.GetFieldType(unitPriceColPos));
    Console.WriteLine("UnitsInStock .NET type = " + productsSqlDataReader.GetFieldType(unitsInStockColPos));
    Console.WriteLine("Discontinued .NET type = " + productsSqlDataReader.GetFieldType(discontinuedColPos));

    Console.WriteLine("ProductID database type = " + productsSqlDataReader.GetDataTypeName(productIDColPos));
    Console.WriteLine("ProductName database type = " + productsSqlDataReader.GetDataTypeName(productNameColPos));
    Console.WriteLine("UnitPrice database type = " + productsSqlDataReader.GetDataTypeName(unitPriceColPos));
    Console.WriteLine("UnitsInStock database type = " + productsSqlDataReader.GetDataTypeName(unitsInStockColPos));
    Console.WriteLine("Discontinued database type = " + productsSqlDataReader.GetDataTypeName(discontinuedColPos));

    while (productsSqlDataReader.Read())
    {
      int productID = productsSqlDataReader.GetInt32(productIDColPos);
      Console.WriteLine("productID = " + productID);

      string productName = productsSqlDataReader.GetString(productNameColPos);
      Console.WriteLine("productName = " + productName);

      decimal unitPrice = productsSqlDataReader.GetDecimal(unitPriceColPos);
      Console.WriteLine("unitPrice = " + unitPrice);

      short unitsInStock = productsSqlDataReader.GetInt16(unitsInStockColPos);
      Console.WriteLine("unitsInStock = " + unitsInStock);

      bool discontinued = productsSqlDataReader.GetBoolean(discontinuedColPos);
      Console.WriteLine("discontinued = " + discontinued);
    }

    productsSqlDataReader.Close();
    mySqlConnection.Close();
  }
}