そんなにSQLが嫌いか
あけたら毒ガスが吹き出る箱を開けてしまった気分。
SQL_SELECT = "SELECT * FROM "; SQL_COUNT = "SELECT COUNT(*) FROM "; SQL_WHERE = " WHERE " SQL_ORDER = " ORDER BY "; SQL_EQUAL = " = "; SQL_AND = " AND "; SQL_OR = " OR "; ... SQL_UPDATE = "UPDATE "; SQL_SET = " SET "; ... SQL_ZERO_STR = "''"; SQL_SEPARATOR= ", "; SQL_LEFT = "("; SQL_RIGHT = ")"; ... SQL_IS_NULL = " IS NULL "; SQL_GETDATE = "GETDATE()";
んで、これを使う側のコード。
StringBuilder sb = new StringBuilder(); sb.Append(SQL_INSERT); sb.Append(someTable); sb.Append(SQL_LEFT); sb.Append(JoinNotNull(SQL_SEPARATOR, cols, vals); sb.Append(SQL_SEPARATOR); // 以下各テーブル共通項目 sb.Append("REG_USER"); sb.Append(SQL_SEPARATOR); sb.Append("REG_DATE"); sb.Append(SQL_SEPARATOR); sb.Append("REG_ID"); sb.Append(SQL_SEPARATOR); sb.Append("UPDATE_USER"); sb.Append(SQL_SEPARATOR); sb.Append("UPDATE_DATE"); sb.Append(SQL_SEPARATOR); sb.Append("UPDATE_ID"); sb.Append(SQL_RIGHT); sb.Append(SQL_VALUES);
ダメだ、ギブアップ。まぁこんな感じ。
ちなみに、自分ならせめてこう書く*1。
sb.AppendFormat(@" INSERT INTO {0} ({1}, reg_user, reg_date, reg_id, update_user, update_date, update_id) VALUES ({2}, {3}, {4}, {5}, {6}, {7}, {8})", someTable, JoinNotNull(",", cols, vals), JoinNotNull(",", params, vals), regUser, regDate, regId, updateUser, updateDate, updateId);
もはやStringBuilderである必要なし。String.FormatでOK.
*1:JoinNotNullってのは独自のヘルパメソッド。このメソッド中のコメント間違ってるんですけど・・・