Contact Us | Site Map
Firebird is used by approximately 1 million of software developers worldwide. High compatibility with industry standards on many fronts makes Firebird the obvious choice for developing interoperable applications for homogeneous and hybrid environments.
.NET — Examples of use
  1. Connection pooling
  2. Update a text blob field
  3. Firebird events [v1.7]
  4. Database backup [v1.7]
  5. Database restore [v1.7]
  6. Database schema [v2.0]

1. Connection pooling

public static void Main(string[] args)
{
// Set the ServerType to 1 for connect to the embedded server
string connectionString =
"User=SYSDBA;" +
"Password=masterkey;" +
"Database=SampleDatabase.fdb;" +
"DataSource=localhost;" +
"Port=3050;" +
"Dialect=3;" +
"Charset=NONE;" +
"Role=;" +
"Connection lifetime=15;" +
"Pooling=true;" +
"MinPoolSize=0;" +
"MaxPoolSize=50;" +
"Packet Size=8192;" +
"ServerType=0";

FbConnection myConnection1 = new FbConnection(connectionString);
FbConnection myConnection2 = new FbConnection(connectionString);
FbConnection myConnection3 = new FbConnection(connectionString);

try
{
// Open two connections.
Console.WriteLine ("Open two connections.");
myConnection1.Open();
myConnection2.Open();

// Now there are two connections in the pool that matches the connection string.
// Return the both connections to the pool.
Console.WriteLine ("Return both of the connections to the pool.");
myConnection1.Close();
myConnection2.Close();

// Get a connection out of the pool.
Console.WriteLine ("Open a connection from the pool.");
myConnection1.Open();

// Get a second connection out of the pool.
Console.WriteLine ("Open a second connection from the pool.");
myConnection2.Open();

// Open a third connection.
Console.WriteLine ("Open a third connection.");
myConnection3.Open();

// Return the all connections to the pool.
Console.WriteLine ("Return all three connections to the pool.");
myConnection1.Close();
myConnection2.Close();
myConnection3.Close();
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}

2. Update a text blob field

public static void Main(string[] args)
{
// Set the ServerType to 1 for connect to the embedded server
string connectionString =
"User=SYSDBA;" +
"Password=masterkey;" +
"Database=SampleDatabase.fdb;" +
"DataSource=localhost;" +
"Port=3050;" +
"Dialect=3;" +
"Charset=NONE;" +
"Role=;" +
"Connection lifetime=15;" +
"Pooling=true;" +
"Packet Size=8192;" +
"ServerType=0";

FbConnection myConnection = new FbConnection(connectionString);
myConnection.Open();

FbTransaction myTransaction = myConnection.BeginTransaction();

FbCommand myCommand = new FbCommand();

myCommand.CommandText =
"UPDATE TEST_TABLE_01 SET CLOB_FIELD = @CLOB_FIELD WHERE INT_FIELD = @INT_FIELD";
myCommand.Connection = myConnection;
myCommand.Transaction = myTransaction;

myCommand.Parameters.Add("@INT_FIELD", FbType.Integer, "INT_FIELD");
myCommand.Parameters.Add("@CLOB_FIELD", FbType.Text, "CLOB_FIELD");

myCommand.Parameters[0].Value = 1;
myCommand.Parameters[1].Value = GetFileContents(@"GDS.CS");

// Execute Update
myCommand.ExecuteNonQuery();

// Commit changes
myTransaction.Commit();

// Free command resources in Firebird Server
myCommand.Dispose();

// Close connection
myConnection.Close();
}

public static string GetFileContents(string fileName)
{
StreamReader reader = new StreamReader(new FileStream(fileName, FileMode.Open));
string contents = reader.ReadToEnd();
reader.Close();
return contents;

3. Firebird events [v1.7]

static void Main(string[] args)
{
FbConnectionStringBuilder cs = new FbConnectionStringBuilder();
cs.DataSource = "localhost";
cs.Database = "employee.fdb";
cs.UserID = "SYSDBA";
cs.Password = "masterkey";
cs.Charset = "NONE";
cs.Pooling = false;

FbConnection connection = new FbConnection(cs.ToString());
connection.Open();

FbRemoteEvent revent = new FbRemoteEvent(connection);
revent.AddEvents(new string[] { "new_order" });

// Add callback to the Firebird events
revent.RemoteEventCounts += new FbRemoteEventEventHandler(EventCounts);

// Queue events
revent.QueueEvents();

string sql = "INSERT INTO SALES (PO_NUMBER, CUST_NO, SALES_REP, ORDER_STATUS, " +
"ORDER_DATE, SHIP_DATE, DATE_NEEDED, PAID, QTY_ORDERED, TOTAL_VALUE, " +
"DISCOUNT, ITEM_TYPE) VALUES (@po_number, 1004, 11, 'new', " +
"'1991-03-04 00:00:00', '1991-03-05 00:00:00', NULL, 'y', 10, 5000, " +
"0.100000001490116, 'hardware');";

FbCommand command = new FbCommand(sql, connection);
command.Parameters.Add("@po_number", FbDbType.Char, 8);

for (int i = 360; i < 365; i++)
{
command.Parameters[0].Value = "V91E0" + i.ToString();
command.ExecuteNonQuery();
}

System.Threading.Thread.Sleep(2000);
connection.Close();
}

static void EventCounts(object sender, FbRemoteEventEventArgs args)
{
Console.WriteLine("Event {0} has {1} counts.", args.Name, args.Counts);

4. Database backup [v1.7]

[STAThread]
static void Main(string[] args)
{
FbConnectionStringBuilder cs = new FbConnectionStringBuilder();

cs.UserID = "SYSDBA";
cs.Password = "masterkey";
cs.Database = "nunit_testdb";

FbBackup backupSvc = new FbBackup();

backupSvc.ConnectionString = cs.ToString();
backupSvc.BackupFiles.Add(new FbBackupFile(@"c:\testdb.gbk", 2048));
backupSvc.Verbose = true;

backupSvc.Options = FbBackupFlags.IgnoreLimbo;

backupSvc.ServiceOutput += new ServiceOutputEventHandler(ServiceOutput);

backupSvc.Execute();
}

static void ServiceOutput(object sender, ServiceOutputEventArgs e)
{
Console.WriteLine(e.Message);

5. Database restore [v1.7]

[STAThread]
static void Main(string[] args)
{
FbConnectionStringBuilder cs = new FbConnectionStringBuilder();

cs.UserID = "SYSDBA";
cs.Password = "masterkey";
cs.Database = "nunit_testdb";

FbRestore restoreSvc = new FbRestore();

restoreSvc.ConnectionString = cs.ToString();
restoreSvc.BackupFiles.Add(new FbBackupFile(@"c:\testdb.gbk", 2048));
restoreSvc.Verbose = true;
restoreSvc.PageSize = 4096;
restoreSvc.Options = FbRestoreFlags.Create | FbRestoreFlags.Replace;

restoreSvc.ServiceOutput += new ServiceOutputEventHandler(ServiceOutput);

restoreSvc.Execute();
}

static void ServiceOutput(object sender, ServiceOutputEventArgs e)
{
Console.WriteLine(e.Message);

6. Database schema [v2.0]

[STAThread]
static void Main(string[] args)
{
FbConnectionStringBuilder cs = new FbConnectionStringBuilder();

cs.DataSource = "localhost";
cs.Database = "employee.fdb";
cs.UserID = "SYSDBA";
cs.Password = "masterkey";
cs.Charset = "NONE";
cs.Pooling = false;

FbConnection connection = new FbConnection(cs.ToString());
connection.Open();

// Get the available metadata Collection names
DataTable metadataCollections = connection.GetSchema();

// Get datatype information
DataTable dataTypes = connection.GetSchema(DbMetaDataCollectionNames.DataTypes);

// Get DataSource Information
DataTable dataSourceInformation = connection.GetSchema(DbMetaDataCollectionNames.DataSourceInformation);

// Get available reserved word
DataTable reservedWords = connection.GetSchema(DbMetaDataCollectionNames.ReservedWords);

// Get the list of User Tables
// Restrictions:
// TABLE_CATALOG
// TABLE_SCHEMA
// TABLE_NAME
// TABLE_TYPE
DataTable userTables = connection.GetSchema("Tables", new string[] { null, null, null, "TABLE" });

// Get the list of System Tables
// Restrictions:
// TABLE_CATALOG
// TABLE_SCHEMA
// TABLE_NAME
// TABLE_TYPE
DataTable systemTables = connection.GetSchema("Tables", new string[] { null, null, null, "SYSTEM TABLE" });

// Get Table Columns
// Restrictions:
// TABLE_CATALOG
// TABLE_SCHEMA
// TABLE_NAME
// COLUMN_NAME
DataTable tableColumns = connection.GetSchema("Columns", new string[] { null, null, "TableName" });

connection.Close();
}

return to top

Join Firebird!
RSS Newsletter
Home About Firebird Documentation Downloads Community Support Development Case Studies Back to Top
This site and the pages contained within are Copyright © 2000-2016, Firebird Project. Firebird® is a registered trademark of Firebird Foundation Incorporated. Developed by DQ Team.