public static int Main(string[] args) { IniFile conf = new IniFile("Example.ini"); DBCon.UseConsoleLog = true; DBTableDef.LoadAll("tabledef"); using (DBCon db = new DBCon(conf)) { // 複数のテーブルを連結して使う DBTable tbl = new DBTable(db, "サンプルテーブル"); tbl.Join("サンプル役職", // 副テーブル名 "ID", // 副テーブルのカラム名 "ID"); // 親テーブルのカラム名 tbl.SetColumns("名前", "役職"); // 検索条件を指定せず、全レコードを表示してみる foreach (DataArray rec in tbl.GetData()) { Console.WriteLine("なまえ:{0}、やくしょく:{1}", rec["名前"], rec["役職"]); } // 副テーブルのカラムを検索条件に使ってもよい tbl.SetCondition("役職", "技術課長"); // tbl.SetCondition("サンプル役職.役職", "技術課長") と、テーブル名を明記してもよい。 foreach (DataArray rec in tbl.GetData()) { Console.WriteLine("なまえ:{0}、やくしょく:{1}", rec["名前"], rec["役職"]); } } return(0); }
public static int Main(string[] args) { // テーブル定義群を読み込む DBTableDef.LoadAll("tabledef"); // ファイル名パターンを指定する場合は、 // DBTableDef.Load("tabledef", "table*.xml"); // のようにする。 // テーブル定義の一覧 foreach (DBTableDef tabledef in DBTableDef.TableList) { Console.WriteLine("TABLE: {0}", tabledef.Name); } // テーブル名を指定してテーブル定義を獲得する DBTableDef def = DBTableDef.Get("サンプルテーブル"); Console.WriteLine("テーブル{0}は、次のカラムを持つ:", def.Name); // カラムの一覧 foreach (DBColumnDef col in def.Columns) { Console.WriteLine("{0}: {1}({2}.{3})", col.Name, col.Type, col.Length, col.FractionalLength); } return(0); }
public static int Main(string[] args) { IniFile conf = new IniFile("Example.ini"); DBCon.UseConsoleLog = true; DBTableDef.LoadAll("tabledef"); using (DBCon db = new DBCon(conf)) { // LEFT OUTER JOINの例 DBTable tbl = new DBTable(db, "サンプルテーブル"); tbl.Join("サンプル役職", "ID", "ID"); tbl.SetColumns("名前", "役職"); foreach (DataArray rec in tbl.GetData()) { Console.WriteLine("なまえ:{0}、やくしょく:{1}", rec["名前"], rec["役職"]); } // INNER JOINの例 tbl = new DBTable(db, "サンプルテーブル"); tbl.InnerJoin("サンプル役職", "ID", "ID"); tbl.SetColumns("名前", "役職"); foreach (DataArray rec in tbl.GetData()) { Console.WriteLine("なまえ:{0}、やくしょく:{1}", rec["名前"], rec["役職"]); } } return(0); }
public static int Main(string[] args) { IniFile conf = new IniFile("Example.ini"); DBCon.UseConsoleLog = true; DBTableDef.LoadAll("tabledef"); using (DBCon db = new DBCon(conf)) { DBTable tbl = new DBTable(db, "サンプルテーブル"); tbl.SetAllColumns(); // 新レコードの内容を格納するDataArrayを用意する DataArray rec = new DataArray(tbl.Columns, null); rec["ID"] = "1000"; // 数値の項目も文字列として入れておく rec["名前"] = "足柄金太郎"; // 新レコードを追加する tbl.Insert(rec); // 念のために新レコードを読み出してみる rec = tbl.GetRecordData("ID", 1000); if (rec != null) { Console.WriteLine("なまえ:{0}、でんわ:{1}", rec["名前"], rec["電話番号"]); } } return(0); }
public static int Main(string[] args) { IniFile conf = new IniFile("Example.ini"); DBCon.UseConsoleLog = true; DBTableDef.LoadAll("tabledef"); using (DBCon db = new DBCon(conf)) { DBTable tbl = new DBTable(db, "サンプルテーブル"); tbl.Join("サンプル役職", "ID", "ID"); // 名前の翻訳をT1という仮テーブル名で行なう tbl.JoinAs("T1", "サンプル翻訳", "日本語", "名前"); // 役職の翻訳をT2という仮テーブル名で行なう tbl.JoinAs("T2", "サンプル翻訳", "T2.日本語=サンプル役職.役職"); tbl.SetColumns("T1.英語", "T2.英語"); foreach (DataArray rec in tbl.GetData()) { Console.WriteLine("Name:{0}, Title:{1}", rec["T1.英語"], rec["T2.英語"]); } } return(0); }
public static int Main(string[] args) { IniFile conf = new IniFile("Example.ini"); DBCon.UseConsoleLog = true; DBTableDef.LoadAll("tabledef"); using (DBCon db = new DBCon(conf)) { // DBTable でテーブル定義を元にテーブルアクセス用オブジェクトを作る DBTable tbl = new DBTable(db, "サンプルテーブル"); // 参照するカラムを指定する tbl.SetColumns("名前", "電話番号"); // 検索条件を指定する tbl.SetCondition("ID", 1); // 検索をし、結果一覧を得る List <DataArray> recs = tbl.GetData(); foreach (DataArray rec in recs) { Console.WriteLine("なまえ:{0}、でんわ:{1}", rec["名前"], rec["電話番号"]); } } return(0); }
public static int Main(string[] args) { IniFile conf = new IniFile("Example.ini"); DBCon.UseConsoleLog = true; DBTableDef.LoadAll("tabledef"); using (DBCon db = new DBCon(conf)) { // 基本テーブルと同じテーブルをサブクエリに使う場合、 // 名前を区別するためにテーブルの別名を付ける必要がある。 DBTable subtbl = new DBTable(db, "サンプルテーブル", "SUBTBL"); subtbl.SetColumn("ID"); // 基本テーブルのID番号の次のID番号を持つレコードを探す subtbl.SetCondition("ID", "!サンプルテーブル.ID+1"); DBTable tbl = new DBTable(db, "サンプルテーブル"); tbl.SetColumns("ID", "名前"); // 1つ次のID番号が無いレコードを抽出する tbl.SetCondition(DBCondition.Code.NotExists, subtbl); foreach (DataArray rec in tbl.GetData()) { Console.WriteLine("{0}: {1}", rec["ID"], rec["名前"]); } } return(0); }
public static int Main(string[] args) { IniFile conf = new IniFile("Example.ini"); DBCon.UseConsoleLog = true; DBTableDef.LoadAll("tabledef"); using (DBCon db = new DBCon(conf)) { DBTable tbl = new DBTable(db, "サンプルテーブル"); tbl.SetCondition(DBCondition.Code.LessOrEqual, "ID", 10); // 条件に合致するレコードを削除する int n = tbl.Delete(); Console.WriteLine("{0}件削除しました", n); // テーブルを連結して条件を指定する tbl = new DBTable(db, "サンプルテーブル"); tbl.Join("サンプル役職", "ID", "ID"); tbl.SetCondition("役職", "取締役"); n = tbl.Delete(); Console.WriteLine("{0}件削除しました", n); } return(0); }
public static int Main(string[] args) { IniFile conf = new IniFile("Example.ini"); DBCon.UseConsoleLog = true; DBTableDef.LoadAll("tabledef"); using (DBCon db = new DBCon(conf)) { DBTable tbl = new DBTable(db, "サンプルテーブル"); tbl.SetAllColumns(); tbl.SetCondition("ID", 1000); // 変更するレコードの内容を格納するDataArrayを用意する DataArray rec = new DataArray(tbl.Columns, null); rec["電話番号"] = "01-2345-6789"; // レコードを更新する int n = tbl.Update(rec); Console.WriteLine("{0}レコード更新しました", n); // 念のためにレコードを読み出してみる rec = tbl.GetRecordData("ID", 1000); if (rec != null) { Console.WriteLine("なまえ:{0}、でんわ:{1}", rec["名前"], rec["電話番号"]); } } return(0); }
public static int Main(string[] args) { IniFile conf = new IniFile("Example.ini"); DBCon.UseConsoleLog = true; DBTableDef.LoadAll("tabledef"); using (DBCon db = new DBCon(conf)) { // データベーストランザクションを開始する db.Begin(); DBTable tbl = new DBTable(db, "サンプルテーブル"); tbl.SetAllColumns(); DataArray rec = new DataArray(tbl.Columns, null); rec["ID"] = "2000"; rec["名前"] = "カルロス ゴーン"; tbl.Insert(rec); // トランザクションをコミットするとデータベース変更が確定する db.Commit(); foreach (DataArray xrec in tbl.GetData()) { Console.WriteLine("{0}: {1}", xrec["ID"], xrec["名前"]); } // もう一度トランザクションを開始する db.Begin(); rec["ID"] = "2001"; rec["名前"] = "マイケル ウッドフォード"; tbl.Insert(rec); // トランザクションをロールバックするとデータベース変更は破棄される db.Rollback(); foreach (DataArray xrec in tbl.GetData()) { Console.WriteLine("{0}: {1}", xrec["ID"], xrec["名前"]); } // もう一度トランザクションを開始する db.Begin(); rec["ID"] = "2002"; rec["名前"] = "堀江貴文"; tbl.Insert(rec); // コミットしないまま DBConがDisposeされると、自動的にロールバックする if (rec["名前"] == "堀江貴文") { throw new Exception("Aborted"); } } return(0); }
public static int Main(string[] args) { IniFile conf = new IniFile("Example.ini"); DBCon.UseConsoleLog = true; DBTableDef.LoadAll("tabledef"); using (DBCon db = new DBCon(conf)) { // サブクエリ用のDBTableを作る // (役職が'技術課長'であるレコードのIDをサンプル役職テーブルから得る) DBTable subtbl = new DBTable(db, "サンプル役職"); subtbl.SetColumn("ID"); subtbl.SetCondition("役職", "技術課長"); // メインクエリ用のDBTableを作る DBTable tbl = new DBTable(db, "サンプルテーブル"); tbl.SetColumns("名前", "電話番号"); // 検索条件にサブクエリを使う // (IDがサブクエリの結果のいずれかである) tbl.SetCondition(DBCondition.Code.In, "ID", subtbl); foreach (DataArray rec in tbl.GetData()) { Console.WriteLine("なまえ:{0}、でんわ:{1}", rec["名前"], rec["電話番号"]); } // 同じ検索をExists条件を使って行なってみる // (IDがサンプルテーブルのIDと等しく、役職が技術課長であるレコードをサンプル役職テーブルから探す) subtbl = new DBTable(db, "サンプル役職"); subtbl.SetColumn("ID"); subtbl.SetCondition("ID", "!サンプルテーブル.ID", "役職", "技術課長"); tbl = new DBTable(db, "サンプルテーブル"); tbl.SetColumns("名前", "電話番号"); // サブクエリの結果が存在するレコードを探す tbl.SetCondition(DBCondition.Code.Exists, subtbl); foreach (DataArray rec in tbl.GetData()) { Console.WriteLine("なまえ:{0}、でんわ:{1}", rec["名前"], rec["電話番号"]); } } return(0); }
public static int Main(string[] args) { IniFile conf = new IniFile("Example.ini"); DBCon.UseConsoleLog = true; DBTableDef.LoadAll("tabledef"); using (DBCon db = new DBCon(conf)) { DBTable tbl = new DBTable(db, "サンプルテーブル"); tbl.SetColumns("名前", "電話番号"); // 結果を1件だけ抽出する DataArray rec = tbl.GetRecordData("ID", 1); // 上記は以下のコードと同じ動作をする // tbl.SetCondition("ID", 1); // List<DataArray> recs = tbl.GetData(1); // DataArray rec; // if(recs.Count > 0) // rec = recs[0]; // else // rec = null; Console.WriteLine("なまえ:{0}、でんわ:{1}", rec["名前"], rec["電話番号"]); // 該当件数だけを獲得する tbl.SetCondition(DBCondition.Code.GreaterOrEqual, "ID", 100); int n = tbl.GetCount(); Console.WriteLine("該当件数は{0}", n); // 該当件数が巨大であることが見込まれる場合の処理方法 tbl.SetCondition(DBCondition.Code.GreaterThan, "ID", 0); using (DBReader reader = tbl.Query(0, 0)) { string[] val; while ((val = reader.Get()) != null) { rec = new DataArray(tbl.Columns, val); Console.WriteLine("なまえ:{0}、でんわ:{1}", rec["名前"], rec["電話番号"]); } } } return(0); }
public static int Main(string[] args) { IniFile conf = new IniFile("Example.ini"); DBCon.UseConsoleLog = true; DBTableDef.LoadAll("tabledef"); using (DBCon db = new DBCon(conf)) { DBTable tbl = new DBTable(db, "サンプルテーブル"); tbl.SetAllColumns(); tbl.SetCondition("ID", 1000); // 検索実行時に FOR UPDATE オプションを付ける tbl.ForUpdate = true; // まず既存レコードの獲得を試みる bool newbie = false; DataArray rec = tbl.GetOneData(); if (rec == null) { // 既存レコードは無い rec = new DataArray(tbl.Columns, null); // 新規レコード時の値をセットする rec["ID"] = "1000"; rec["名前"] = "七師権兵衛"; newbie = true; } // 変更する値をセットする rec["電話番号"] = "098-765-4321"; if (newbie) { tbl.Insert(rec); Console.WriteLine("レコードを追加しました"); } else { tbl.Update(rec); Console.WriteLine("レコードを更新しました"); } } return(0); }
public static int Main(string[] args) { IniFile conf = new IniFile("Example.ini"); DBCon.UseConsoleLog = true; DBTableDef.LoadAll("tabledef"); using (DBCon db = new DBCon(conf)) { // サンプルテーブルをサブクエリとして使う DBTable subtbl = new DBTable(db, "サンプルテーブル"); // INSERTするサンプル給与テーブルのカラムにあわせてカラム一覧を // セットしておく。 subtbl.SetColumns("ID", "0.00"); // サンプルテーブルに存在する全レコードに対応するサンプル給与レコードを作る DBTable tbl = new DBTable(db, "サンプル給与"); tbl.SetColumns("ID", "給与"); int n = tbl.Insert(subtbl); Console.WriteLine("{0}件追加しました", n); } return(0); }
public static int Main(string[] args) { IniFile conf = new IniFile("Example.ini"); DBCon.UseConsoleLog = true; DBTableDef.LoadAll("tabledef"); using (DBCon db = new DBCon(conf)) { DBTable tbl = new DBTable(db, "サンプルテーブル"); tbl.SetColumns("名前", "電話番号"); // 等値以外の検索条件を指定する tbl.SetCondition(DBCondition.Code.LessOrEqual, "ID", 3); foreach (DataArray rec in tbl.GetData()) { Console.WriteLine("なまえ:{0}、でんわ:{1}", rec["名前"], rec["電話番号"]); } tbl.SetCondition(DBCondition.Code.Between, "ID", 1, 9); foreach (DataArray rec in tbl.GetData()) { Console.WriteLine("なまえ:{0}、でんわ:{1}", rec["名前"], rec["電話番号"]); } tbl.SetCondition(DBCondition.Code.Contains, "名前", "一郎"); foreach (DataArray rec in tbl.GetData()) { Console.WriteLine("なまえ:{0}、でんわ:{1}", rec["名前"], rec["電話番号"]); } tbl.SetCondition(DBCondition.Code.EndsWith, "名前", "一郎"); foreach (DataArray rec in tbl.GetData()) { Console.WriteLine("なまえ:{0}、でんわ:{1}", rec["名前"], rec["電話番号"]); } string[] namelist = new string[] { "テスト一郎", "テスト次郎" }; tbl.SetCondition(DBCondition.Code.In, "名前", namelist); foreach (DataArray rec in tbl.GetData()) { Console.WriteLine("なまえ:{0}、でんわ:{1}", rec["名前"], rec["電話番号"]); } tbl.SetCondition("名前", "テスト一郎", "電話番号", "03-4567-8901"); // 上記は次と同じ。 // tbl.SetCondition("名前", "テスト一郎"); // tbl.AddCondition("電話番号", "03-4567-8901"); foreach (DataArray rec in tbl.GetData()) { Console.WriteLine("なまえ:{0}、でんわ:{1}", rec["名前"], rec["電話番号"]); } tbl.SetCondition(DBCondition.Code.CollateEquals, "名前", "てすと一郎"); foreach (DataArray rec in tbl.GetData()) { Console.WriteLine("なまえ:{0}、でんわ:{1}", rec["名前"], rec["電話番号"]); } } return(0); }