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.
