Beispiel #1
0
        //データクラスをテーブルにマッピングしてDBを更新します。
        public static DataRowAccessor InsertOrUpdateByDataClass(Object obj)
        {
            ObjectSqlizer os = new ObjectSqlizer(obj);

            if (IsExist(os))
            {
                DBHelper.Execute(os.UpdateSql);
            }
            else
            {
                using (DBHelperWithTransaction db = new DBHelperWithTransaction())
                {
                    db.Execute(os.InsertSql);
                    if (os.Sequence == 0) //Sequence使ってて且つ新規の場合
                    {
                        os.Sequence = db.Select(
                            new DBSqlStatement("SELECT IDENT_CURRENT('@DB@@TABLE_NAME@') SEQUENCE")
                            .ReplaceStripString("TABLE_NAME", os.TableName)
                            )[0]["SEQUENCE"].Int;
                    }
                    db.Commit();
                }
            }
            //TODO 0件しか取れなかったらどうするか考える
            return(DBHelper.Select(os.SelectSql)[0]);
        }
Beispiel #2
0
 //複数のデータクラスを1トランザクションでDB更新します。
 public static XmlDocument InsertOrUpdateByDataClass(Object[] objs)
 {
     using (DBHelperWithTransaction db = new DBHelperWithTransaction())
     {
         foreach (Object obj in objs)
         {
             ObjectSqlizer os = new ObjectSqlizer(obj);
             if (IsExistWithTrans(os, db))
             {
                 db.Execute(os.UpdateSql);
             }
             else
             {
                 db.Execute(os.InsertSql);
             }
         }
         db.Commit();
     }
     return(new SuccessDocument());
 }
Beispiel #3
0
 private static bool IsExistWithTrans(ObjectSqlizer os, DBHelperWithTransaction db)
 {
     return(os.Sequence > 0 || db.Select(os.CountByPKSql)[0]["CT"].Int != 0);
 }