とりあえず、一番低レベルなやつのサンプルです。
ConnectionからSQL発行してます。
実行するには、Firebird用の.Net Data Providerをインストールする
必要があります。
// vim:set ts=4 sw=4 et ws is nowrap ft=cs: using System; using System.Data; using FirebirdSql.Data.FirebirdClient; namespace Gsf.Samples.CSharp{ ///<summary> /// Firebirdデータベースへの接続・データ取得・追加・変更・削除 /// のサンプルです。実行する際はFirebirdClientのdll(FirebirdSql.Data.Firebird.dll) /// が必要になります。 ///</summary> class FirebirdConnectSample{ const string _connectionString = "DataSource=localhost;Database=test_db;User=test;Password=xxxx;Dialect=3;Character Set=SJIS_0208"; static void Main(){ // // 接続. // IDbConnection conn = null; try{ Console.Write("接続開始.............."); conn = new FbConnection(); conn.ConnectionString = _connectionString; conn.Open(); Console.WriteLine("接続完了!!!"); // // Select. // IDbCommand select = conn.CreateCommand(); select.CommandText = "select id, name from category"; // // DataReaderは、関連するコネクションを排他ロックするので // 一つのDataReaderがオープンしている間は他のDataReaderを // そのコネクションで処理することができない。 // PrintCategories(select); // // 以下のように、該当テーブルのスキーマ情報を // 取得することも可能。 // using(IDataReader reader = select.ExecuteReader()){ if(((FbDataReader) reader).HasRows){ DataTable table = reader.GetSchemaTable(); foreach(DataRow row in table.Rows){ foreach(DataColumn column in table.Columns){ Console.WriteLine("{0} : {1}", column.ColumnName, row[column]); } } } } // // Insert. // IDbCommand insert = conn.CreateCommand(); insert.CommandText = "insert into category (id, name) values (@Id, @Name)"; insert.Parameters.Add(new FbParameter("@Id", 100)); insert.Parameters.Add(new FbParameter("@Name", "FirebirdConnectSample")); int count = insert.ExecuteNonQuery(); Console.WriteLine("inserted : {0}", count); PrintCategories(select); // // Update. // IDbCommand update = conn.CreateCommand(); update.CommandText = "update category set name = @Name where id = @Id"; update.Parameters.Add(new FbParameter("@Id", 100)); update.Parameters.Add(new FbParameter("@Name", "updated name.")); count = update.ExecuteNonQuery(); Console.WriteLine("updated : {0}", count); PrintCategories(select); // // Delete. // IDbCommand delete = conn.CreateCommand(); delete.CommandText = "delete from category where id = @Id"; delete.Parameters.Add(new FbParameter("@Id", 100)); count = delete.ExecuteNonQuery(); Console.WriteLine("deleted : {0}", count); PrintCategories(select); }finally{ if(conn != null){ conn.Close(); Console.WriteLine("コネクションを解放。"); } } } private static void PrintCategories(IDbCommand select){ using(IDataReader reader = select.ExecuteReader()){ if(((FbDataReader) reader).HasRows){ for(; reader.Read();){ Console.WriteLine("{0}: {1}", reader["id"], reader["name"]); } } } } } }
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ