Дата публикации: 26.03.2015
Работа в рамках ADODB подключения. (C#)
//////////////////////////////////////////////////////////////////////////////// //Samples for LCPI ADO.NET Data provider for OLEDB. // 26.03.2015. using System; using System.Data; using System.Diagnostics; using lcpi.data.oledb; using com_lib=lcpi.lib.com; using adodb_lib=lcpi.lib.adodb; namespace Sample_0022{ //////////////////////////////////////////////////////////////////////////////// //class Program class Program { private const string c_cn_str ="provider=LCPI.IBProvider.5;" +"location=localhost:d:\\database\\fb_03_0_0\\employee.fdb;" +"dbclient_type=fb.direct;" +"user id=gamer;" +"password=vermut;"; //----------------------------------------------------------------------- static int Main() { int resultCode=0; dynamic adodbCn=null; try //[catch] [finally] { adodbCn =com_lib.ObjectUtils.CreateInstance ("ADODB.Connection", com_lib.ClsCtxCode.CLSCTX_INPROC_SERVER).GetObject(); adodbCn.ConnectionString=c_cn_str; adodbCn.Open(); adodbCn.BeginTrans(); using(var oledbCn=new OleDbConnection()) { oledbCn.AttachToNativeSession(adodb_lib.AdoDbConstructor.get_oledb_session_from_adodb_cn(adodbCn)); using(var cmd=oledbCn.CreateCommand()) { cmd.CommandText="select c.CURRENCY from COUNTRY c where c.COUNTRY=:country"; cmd["country"].Value="USA"; Console.WriteLine("currency: {0}",cmd.ExecuteScalar()); } }//using oledbCn adodbCn.CommitTrans(); } catch(Exception exc) { resultCode=1; Console.WriteLine("ERROR: {0} - {1}",exc.Source,exc.Message); }//catch finally { Helper__ReleaseComObject(ref adodbCn); }//finally return resultCode; }//main //Helper interface ------------------------------------------------------ private static void Helper__ReleaseComObject<T>(ref T obj) where T:class { var x=System.Threading.Interlocked.Exchange(ref obj,null); Helper__ReleaseComObject(x); }//Helper__ReleaseComObject //----------------------------------------------------------------------- private static void Helper__ReleaseComObject(object obj) { if(!Object.ReferenceEquals(obj,null)) System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); }//Helper__ReleaseComObject };//class Program //////////////////////////////////////////////////////////////////////////////// }//nms Sample_0022
Вывод.
Ревизия [2020-04-22]. Явное освобождение adodbCn через Helper__ReleaseComObject.