Beispiel #1
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");    // 親テーブルのカラム名
            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);
    }
Beispiel #2
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);
    }
Beispiel #3
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);
    }
Beispiel #4
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);
    }
Beispiel #5
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);
    }
Beispiel #6
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);
    }
Beispiel #7
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);
    }
Beispiel #8
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);
    }
Beispiel #9
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);
    }
Beispiel #10
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);
    }
Beispiel #11
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);
    }
Beispiel #12
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);
    }
Beispiel #13
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);
    }
Beispiel #14
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);
    }
Beispiel #15
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);
    }