Дата публикации: 03.03.2015
Создание базы данных через ADO.NET провайдер. Без компромиссов. (C#, Firebird 2.5+)
//////////////////////////////////////////////////////////////////////////////// //Samples for LCPI ADO.NET Data provider for OLEDB. // 03.03.2015. using System; using System.Data; using System.Diagnostics; using lcpi.data.oledb; namespace Sample_0020{ //////////////////////////////////////////////////////////////////////////////// //class Program class Program { static int Main() { int resultCode=0; try //[catch] { var cnsb=new OleDbConnectionStringBuilder(); cnsb.Provider="LCPI.IBProvider.3"; cnsb.Location="localhost:d:\\database\\TEST_DB__SMPL_20_FB2_5.gdb"; cnsb["user id"]="SYSDBA"; cnsb["password"]="masterkey"; cnsb["ctype"]="win1251"; cnsb["auto_commit"]=true; //-------- cnsb["IBP_NEWDB: Database Page Size"]=8192; cnsb["IBP_NEWDB: Database Dialect"]=3; cnsb["IBP_NEWDB: Default Charset"]="win1251"; cnsb["IBP_NEWDB: Default Charset Collation"]="pxw_cyrl"; //-------- var cn=new OleDbConnection(cnsb.ToString()); //-------- Console.WriteLine("Create database ..."); cn.CreateDatabase(); //-------- using(var cmd=new OleDbCommand("select RDB$CHARACTER_SET_NAME\n" +"from RDB$DATABASE", cn)) { Console.WriteLine("\nDB.def_charset: \"{0}\"",cmd.ExecuteScalar()); } //-------- using(var cmd=new OleDbCommand("select RDB$DEFAULT_COLLATE_NAME\n" +"from RDB$CHARACTER_SETS\n" +"where RDB$CHARACTER_SET_NAME='WIN1251'", cn)) { Console.WriteLine("\nWIN1251.def_collation: \"{0}\"",cmd.ExecuteScalar()); } //-------- Console.WriteLine("\nCreate DUAL table ..."); using(var cmd=new OleDbCommand ("set transaction;\n" +"create TABLE DUAL (ID INTEGER NOT NULL PRIMARY KEY);\n" +"commit retain;\n" +"insert into DUAL VALUES(0);\n" +"commit retain;\n" +"create exception E_DUAL '********* DON''T TOUCH THAT TABLE! ************';" +"create trigger BIUD_DUAL for DUAL BEFORE INSERT OR UPDATE OR DELETE AS BEGIN EXCEPTION E_DUAL; END;\n" +"commit;", cn)) { cmd.ExecuteNonQuery(); } //-------- Console.WriteLine("\nSelect from DUAL table ..."); using(var cmd=new OleDbCommand("select ID from DUAL",cn)) { Console.WriteLine("\nDUAL.ID: {0}",cmd.ExecuteScalar()); }//using cmd //-------- Console.WriteLine("\nAttempt to delete from DUAL ..."); var prevCulture=System.Threading.Thread.CurrentThread.CurrentUICulture; try { using(var cmd=new OleDbCommand("delete from DUAL;",cn)) { cmd.ExecuteNonQuery(); //throw! }//using } catch(Exception exc) { //display error text on english. System.Threading.Thread.CurrentThread.CurrentUICulture =new System.Globalization.CultureInfo("EN"); Console.WriteLine("\nOK: {0} - {1}",exc.Source,exc.Message); } finally { //restore culture System.Threading.Thread.CurrentThread.CurrentUICulture=prevCulture; } //-------- Console.WriteLine("\nDrop database ..."); cn.DropDatabase(); //-------- Console.WriteLine("\nOK. Run again!"); } catch(Exception exc) { resultCode=1; Console.WriteLine("ERROR: {0} - {1}",exc.Source,exc.Message); }//catch return resultCode; }//Main }//class Program //////////////////////////////////////////////////////////////////////////////// }//nms Sample_0020
Вывод.