Publish date: 2020-02-27
Reading of IsAutoIncrement attribute. (C#, FB3)
//////////////////////////////////////////////////////////////////////////////// //Samples for LCPI ADO.NET Data provider for OLEDB. // ibprovider.com. 16.02.2020 using System; using System.Diagnostics; using lcpi.data.oledb; using structure_lib=lcpi.lib.structure; namespace Sample_0028{ //////////////////////////////////////////////////////////////////////////////// //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; OleDbDataReader reader=null; try { cn=new OleDbConnection(c_cn_str); cn.Open(); var dsinfo=cn.GetSchema(OleDbMetaDataCollectionNames.DataSourceInformation); Helper__CheckComponents(dsinfo); tr=cn.BeginTransaction(); cmd=new OleDbCommand(null,cn,tr); //-------------------- Console.WriteLine("Recreate TBL_WITH_IDENTITY ..."); cmd.CommandText ="recreate table TBL_WITH_IDENTITY\n" +"(ID1 INTEGER GENERATED BY DEFAULT AS IDENTITY,\n" +" ID2 INTEGER)"; cmd.ExecuteNonQuery(); //-------------------- Console.WriteLine("Commit retain ..."); tr.CommitRetaining(); //-------------------- cmd.CommandText ="select ID1,ID2 from TBL_WITH_IDENTITY"; reader =cmd.ExecuteReader(System.Data.CommandBehavior.SchemaOnly); var readerSchema=reader.GetSchemaTable(); for(int iRow=0;iRow!=readerSchema.Rows.Count;++iRow) { var readerSchemaRow=readerSchema.Rows[iRow]; Console.WriteLine ("[{0}] \"{1}\" IsAutoIncrement flag: {2}", iRow, readerSchemaRow[OleDbDataReaderSchemaColumnNames.ColumnName], readerSchemaRow[OleDbDataReaderSchemaColumnNames.IsAutoIncrement]); }//for i //-------------------- Console.WriteLine("Commit ..."); tr.Commit(); } catch(Exception e) { resultCode=1; Console.WriteLine(""); Console.WriteLine("ERROR: {0} - {1}",e.Source,e.Message); }//catch finally { structure_lib.DisposeUtils.Exec(ref reader); structure_lib.DisposeUtils.Exec(ref cmd); structure_lib.DisposeUtils.Exec(ref tr); structure_lib.DisposeUtils.Exec(ref cn); }//finally return resultCode; }//Main //----------------------------------------------------------------------- private static void Helper__CheckComponents(System.Data.DataTable dsinfo) { Debug.Assert(!Object.ReferenceEquals(dsinfo,null)); var dsinfoRow=dsinfo.Rows[0]; Helper__CheckComponents_DBMS(dsinfoRow); Helper__CheckComponents_Provider(dsinfoRow); }//Helper__CheckComponents //----------------------------------------------------------------------- private static void Helper__CheckComponents_DBMS(System.Data.DataRow dsinfoRow) { Debug.Assert(!Object.ReferenceEquals(dsinfoRow,null)); var dbmsName =dsinfoRow[OleDbMetaDataCollectionColumnNames.DataSourceInformation.DataSourceProductName]; var dbmsVersion =dsinfoRow[OleDbMetaDataCollectionColumnNames.DataSourceInformation.DataSourceProductVersion]; if(DBNull.Value.Equals(dbmsName)) Helper__ThrowErr("DBMS Name is not defined!"); if(DBNull.Value.Equals(dbmsVersion)) Helper__ThrowErr("DBMS Version is not defined!"); if((string)(dbmsName)!="Firebird") Helper__ThrowErr("Wrong DBMS name: {0}. Expected \"Firebird\".",dbmsName); if(new Version((string)dbmsVersion)<new Version("3.0")) Helper__ThrowErr("Wrong Firebird version: {0}. Expected version not less than 3.0.",dbmsVersion); Console.WriteLine("OK. We work with \"{0} v{1}\"",dbmsName,dbmsVersion); }//Helper__CheckComponents_DBMS //----------------------------------------------------------------------- private static void Helper__CheckComponents_Provider(System.Data.DataRow dsinfoRow) { Debug.Assert(!Object.ReferenceEquals(dsinfoRow,null)); var providerName =dsinfoRow[OleDbMetaDataCollectionColumnNames.DataSourceInformation.LCPI_OleDbProviderFriendlyName]; if(DBNull.Value.Equals(providerName)) Helper__ThrowErr("OLE DB Provider Name is not defined!"); var providerVer =dsinfoRow[OleDbMetaDataCollectionColumnNames.DataSourceInformation.LCPI_OleDbProviderVersion]; if(DBNull.Value.Equals(providerVer)) Helper__ThrowErr("OLE DB Provider Name is not defined!"); //---- if(!((string)providerName).Contains("LCPI OLE DB Provider for InterBase")) Helper__ThrowErr("Unexpected OLE DB Provider: [{0}]",providerName); if(new Version((string)providerVer)<new Version("5.12")) Helper__ThrowErr("Wrong IBProvider version: {0}. Expected version not less than 5.12.",providerVer); Console.WriteLine("OK. We work with \"{0} v{1}\"",providerName,providerVer); }//Helper__CheckComponents_Provider //----------------------------------------------------------------------- private static void Helper__ThrowErr(string msgTemplate,params object[] args) { var msg=string.Format(msgTemplate,args); throw new ApplicationException(msg); }//Helper__ThrowErr }//class Program //////////////////////////////////////////////////////////////////////////////// }//namespace Sample_0028
Output.