How to read a table schema

   


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

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

    SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
    mySqlCommand.CommandText ="SELECT ID, FirstName, LastName FROM Employee WHERE ID = 8";

    mySqlConnection.Open();

    SqlDataReader productsSqlDataReader =mySqlCommand.ExecuteReader(CommandBehavior.SchemaOnly);
    DataTable myDataTable = productsSqlDataReader.GetSchemaTable();

    foreach (DataRow myDataRow in myDataTable.Rows)
    {
      Console.WriteLine("
New column details follow:");
      foreach (DataColumn myDataColumn in myDataTable.Columns)
      {
        Console.WriteLine(myDataColumn + "= " +
          myDataRow[myDataColumn]);
        if (myDataColumn.ToString() == "ProviderType")
        {
          Console.WriteLine(myDataColumn + "= " +
            ((System.Data.SqlDbType) myDataRow[myDataColumn]));
        }
      }
    }

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

           
          


Read schema information using the FillSchema() method of a DataAdapter object

   


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

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

    SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
    mySqlCommand.CommandText =
      "SELECT ProductID, ProductName " +
      "FROM Products;" +
      "SELECT OrderID " +
      "FROM Orders;" +
      "SELECT OrderID, ProductID, UnitPrice " +
      "FROM [Order Details];";
    SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter();
    mySqlDataAdapter.SelectCommand = mySqlCommand;
    DataSet myDataSet = new DataSet();
    mySqlConnection.Open();
    mySqlDataAdapter.FillSchema(myDataSet, SchemaType.Mapped);
    mySqlConnection.Close();
    myDataSet.Tables["Table"].TableName = "Products";
    myDataSet.Tables["Table1"].TableName = "Orders";
    myDataSet.Tables["Table2"].TableName = "Order Details";

    foreach (DataTable myDataTable in myDataSet.Tables)
    {
      Console.WriteLine("

Reading from the " +
        myDataTable + "DataTable:
");

      foreach (DataColumn myPrimaryKey in myDataTable.PrimaryKey)
      {
        Console.WriteLine("myPrimaryKey = " + myPrimaryKey);
      }

      foreach (Constraint myConstraint in myDataTable.Constraints)
      {
        Console.WriteLine("myConstraint.IsPrimaryKey = " + ((UniqueConstraint) myConstraint).IsPrimaryKey);
        foreach (DataColumn myDataColumn in ((UniqueConstraint) myConstraint).Columns)
        {
          Console.WriteLine("myDataColumn.ColumnName = " + myDataColumn.ColumnName);
        }
      }

      foreach (DataColumn myDataColumn in myDataTable.Columns)
      {
        Console.WriteLine("
myDataColumn.ColumnName = " + myDataColumn.ColumnName);
        Console.WriteLine("myDataColumn.DataType = " + myDataColumn.DataType);

        Console.WriteLine("myDataColumn.AllowDBNull = " + myDataColumn.AllowDBNull);
        Console.WriteLine("myDataColumn.AutoIncrement = " + myDataColumn.AutoIncrement);
        Console.WriteLine("myDataColumn.AutoIncrementSeed = " + myDataColumn.AutoIncrementSeed);
        Console.WriteLine("myDataColumn.AutoIncrementStep = " + myDataColumn.AutoIncrementStep);
        Console.WriteLine("myDataColumn.MaxLength = " + myDataColumn.MaxLength);
        Console.WriteLine("myDataColumn.ReadOnly = " + myDataColumn.ReadOnly);
        Console.WriteLine("myDataColumn.Unique = " + myDataColumn.Unique);
      }
    }
  }
}
           
          


Get Column data type and name from DataColumn


   


using System;
using System.Data;
using System.Data.OleDb;

public class DatabaseInfo {    
 public static void Main () { 
   String connect = "Provider=Microsoft.JET.OLEDB.4.0;data source=.Employee.mdb";
   OleDbConnection con = new OleDbConnection(connect);
   con.Open();  
   Console.WriteLine("Made the connection to the database");

   String cmd = "SELECT * FROM Employee"; 
   OleDbDataAdapter adapter = new OleDbDataAdapter();
   adapter.SelectCommand = new OleDbCommand(cmd, con);
   DataSet ds = new DataSet();
   adapter.Fill(ds, "Employee");
   DataTable item = ds.Tables[0];
   Console.WriteLine("Table name: {0}", item.TableName);
   Console.WriteLine("Its columns are:");
   foreach (DataColumn col in item.Columns)
     Console.WriteLine("{0}	{1}", col.ColumnName, col.DataType);

   con.Close();
 }
}
 
           
          


Get specified column data type and column name from OleDbSchemaTable


   

using System;
using System.Data;
using System.Data.OleDb;

public class DatabaseInfo {    
 public static void Main () { 
   String connect = "Provider=Microsoft.JET.OLEDB.4.0;data source=.Employee.mdb";
   OleDbConnection con = new OleDbConnection(connect);
   con.Open();  
   Console.WriteLine("Made the connection to the database");

   Console.WriteLine("Information for each table contains:");
   DataTable tables = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[]{null,null,null,"TABLE"});

   DataTable cols = con.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,
         new object[]{null,null,"Employee",null});

   Console.WriteLine("The columns in the Customer table are:");
 
   foreach(DataRow row in cols.Rows) 
     Console.WriteLine("  {0}	{1}", row[3],(OleDbType)row[11]);

   con.Close();
 }
}
 

           
          


Get all table names


   


using System;
using System.Data;
using System.Data.OleDb;

public class DatabaseInfo {    
 public static void Main () { 
   String connect = "Provider=Microsoft.JET.OLEDB.4.0;data source=.Employee.mdb";
   OleDbConnection con = new OleDbConnection(connect);
   con.Open();  
   Console.WriteLine("Made the connection to the database");

   Console.WriteLine("Information for each table contains:");
   DataTable tables = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[]{null,null,null,"TABLE"});

   Console.WriteLine("The tables are:");
   foreach(DataRow row in tables.Rows) 
     Console.Write("  {0}", row[2]);


   con.Close();
 }
}
 
           
          


Refernece column name in SqlDataReader

   


using System;
using System.Data.SqlClient;

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

      SqlCommand mySqlCommand = mySqlConnection.CreateCommand();

      mySqlCommand.CommandText =  "SELECT id, firstname, lastname from employee";

      mySqlConnection.Open();
      SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader();

      mySqlDataReader.Read();

      Console.WriteLine("mySqlDataReader[" ID"] = "+ mySqlDataReader["ID"]);
      Console.WriteLine("mySqlDataReader[" First Name"] = "+ mySqlDataReader["FirstName"]);
      Console.WriteLine("mySqlDataReader[" Last Name"] = "+ mySqlDataReader["LastName"]);

      mySqlDataReader.Close();

      mySqlConnection.Close();
    }
    catch (SqlException e)
    {
      Console.WriteLine("A SqlException was thrown");
      Console.WriteLine("Number = "+ e.Number);
      Console.WriteLine("Message = "+ e.Message);
      Console.WriteLine("StackTrace:
" + e.StackTrace);
    }
  }
}
           
          


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

   

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