C# und Interbase



Die Datenbank Interbase wurde von Borland freigegeben und wird jetzt unter Mozill als FireBird weiterentwickelt.

Datenbank

Die Datenbank ist eine Datei name.GDB und ist zu Interbase kompatibel. Es gibt Treibeer für ODBC, Java, .net usw. auf der Downloadseite.



Installation für Sharpdevelop 2.0

Die Kompoenten werden installiert und sind dann automatisch im GAC verfügbar. Durch Einfügen in die Tool-Leiste „Data“ können sie auch für den Designer verfügbar gemacht werden





Mit der rechten Maustaste auf den Sidebar „Data






Beispielprogramm

Als Grundlage wurde das Beispiel aus der Beispielsammlung für die Mysql-Treiber verwendet; durch textmäßiges Ersetzten aller „MySql“ durch „Fb“ wird daraus ein fast schon lauffähiges Programm. Lediglich die SQL-Funktionen „SHOW DATABASES“ und „SHOW TABLES“, die in Interbase nicht verfügbar sind, müssen angepasst werden.




Quelltextauszug


using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

using FirebirdSql;

using FirebirdSql.Data.FirebirdClient;

namespace TableEditor

{

/// <summary>

/// Summary description for Form1.

/// </summary>

public class Form1 : System.Windows.Forms.Form

{

#region deklarations

private System.Windows.Forms.Label label1;

private System.Windows.Forms.Label label2;

private System.Windows.Forms.Label label3;

private System.Windows.Forms.Label label4;

private System.Windows.Forms.ComboBox tables;

private System.Windows.Forms.TextBox server;

private System.Windows.Forms.TextBox userid;

private System.Windows.Forms.TextBox password;

private System.Windows.Forms.Button connectBtn;

private System.Windows.Forms.Button updateBtn;

/// <summary>

/// Required designer variable.

/// </summary>

private System.ComponentModel.Container components = null;

private System.Windows.Forms.ComboBox databaseList;

private System.Windows.Forms.Label label5;


private FbConnection conn;

private DataTable data;

private FbDataAdapter da;

private System.Windows.Forms.DataGrid dataGrid;

private FbCommandBuilder cb;

#endregion


...


private FirebirdSql.Data.FirebirdClient.FbConnection fbConnection1;


...


private void connectBtn_Click(object sender, System.EventArgs e)

{

if (conn != null) conn.Close();

string connStr = String.Format("server={0};user id={1}; password={2};"

+" database=d:\\PASSION.GDB; pooling=false",

server.Text, userid.Text, password.Text );


try

{

conn = new FbConnection( connStr );

conn.Open();

GetDatabases();

}

catch (FbException ex)

{

MessageBox.Show( "Error connecting to the server: " + ex.Message );

}

}


private void GetDatabases()

{

databaseList.Items.Add( @"d:\passion.gdb");

}


private void databaseList_SelectedIndexChanged(object sender, System.EventArgs e)

{

FbDataReader reader = null;


conn.ChangeDatabase( databaseList.SelectedItem.ToString() );


//FbCommand cmd = new FbCommand("SHOW TABLES", conn);

FbCommand cmd = new FbCommand(

"SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE RDB$SYSTEM_FLAG = 0;"

, conn);

try

{

reader = cmd.ExecuteReader();

tables.Items.Clear();

while (reader.Read())

{

tables.Items.Add( reader.GetString(0) );

}

}

catch (FbException ex)

{

MessageBox.Show("Failed to populate table list: " + ex.Message );

}

finally

{

if (reader != null) reader.Close();

}

}

...