Esempio n. 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)) {
            // データベーストランザクションを開始する
            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);
    }