0

最初に私は CString(MFC) を持っています

CString csSQL

たとえば、SQL文字列をフォーマットするとき

csSQL.Format( szFormat, szTableName, szColumn, szValue, intValue )

szValue で特別な char を処理する必要があるため、新しいクラス MySQLString を作成する必要があります

mySQLcs.FormatSQL( szFormat, szTableName, szColumn, szValue, intValue )

機能を備えたもの

csSQL.Format( szFormat, szTableName, szColumn, HandleSpecialChar(szValue), intValue )

ただし、パラメーターの形式関数の受け入れが固定されていないためです。難しいと思いました。解決策はありますか?

4

1 に答える 1

1

CString クラスにハンドラーを追加しません。

(新しい)関数を書く

CString FormatSQLString(CString const& format, CString const& tableName, CString const& columnName, CString const& value) {
  CString csSQL;
  return csSQL.Format(format, tableName, columnName, HandleSpecialChar(value));
}

そしてCString GetUpdateStmt(tableName, columnName, value)、コード全体にフォーマット文字列を振りかける必要がないように、その関数をさらに上にラップします (例: )。

SQL ステートメントの入力を構造化された方法で使用するコードを作成する場合、それが私が提案したような関数のコレクションの場合のように、SQLQueryStringBuilder(作成された名前) クラスを使用または作成することによってであっても、そこに属さない文字列フォーマットに何かを押し込まなければならないという問題があります。

于 2013-07-22T09:01:06.517 に答える