Publish date: 2020-04-20
Getting statement plan (C#, FB)
////////////////////////////////////////////////////////////////////////////////
//Samples for LCPI ADO.NET Data provider for OLEDB.
//                                                    ibprovider.com. 19.04.2020
using System;
using lcpi.data.oledb;
//nuget package: lcpi.sdk.ibprovider.v05
using ibp_sdk=lcpi.sdk.ibprovider.v05;
namespace Sample_0029{
////////////////////////////////////////////////////////////////////////////////
//class Program
class Program
{
 private const string c_cn_str
  ="provider=LCPI.IBProvider.5;"
  +"location=localhost:d:\\database\\ram\\ibp_test_fb30_d3.gdb;"
  +"dbclient_type=fb.direct;"
  +"user id=GAMER;"
  +"password=vermut;";
 //----------------------------------------------------------------------
 static int Main(string[] args)
 {
  int resultCode=0;
  OleDbConnection  cn=null;
  OleDbTransaction tr=null;
  OleDbCommand     cmd=null;
  try
  {
   cn=new OleDbConnection(c_cn_str);
   cn.Open();
   tr=cn.BeginTransaction();
   cmd=new OleDbCommand(null,cn,tr);
   //--------------------
   cmd.CommandText
    ="select ID from DUAL where ID=1";
   cmd.Prepare();
   object stmtPlan
    =cmd.Properties.ReadByID
      (ibp_sdk.IBP_DBPROPSET.STATEMENTINFO.ID,
       ibp_sdk.IBP_DBPROPSET.STATEMENTINFO.PROPID.PLAN);
   Console.WriteLine("Stmt Plan: {0}",stmtPlan);
   //--------------------
   tr.Commit();
  }
  catch(Exception e)
  {
   resultCode=1;
   Console.WriteLine("");
   Console.WriteLine("ERROR: {0} - {1}",e.Source,e.Message);
  }//catch
  finally
  {
   Helper__Dispose(ref cmd);
   Helper__Dispose(ref tr);
   Helper__Dispose(ref cn);
  }//finally
  return resultCode;
 }//Main
 //Helper interface ------------------------------------------------------
 private static void Helper__Dispose<T>(ref T obj) where T:class, IDisposable
 {
  var x=System.Threading.Interlocked.Exchange(ref obj,null);
  Helper__Dispose(x);
 }//Helper__Dispose
 //-----------------------------------------------------------------------
 private static void Helper__Dispose(IDisposable obj)
 {
  if(!Object.ReferenceEquals(obj,null))
   obj.Dispose();
 }//Helper__Dispose
}//class Program
////////////////////////////////////////////////////////////////////////////////
}//namespace Sample_0029
 
Output.

 
				