2013-07-22 67 views
0

首先格式化功能我有一個CString(MFC)如何添加處理程序的CString

CString csSQL 

當格式的SQL字符串,例如

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

我需要處理特殊字符在szValue,所以我需要一個新類MySQLString

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

它具有功能

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

但是因爲參數format函數accept不固定。我發現它很困難。有沒有解決方法?

回答

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(構成名稱)類,那麼你就不會有這樣的問題,不得不將某些東西塞進不屬於那裏的字符串格式。

+0

可能我不清楚,所以我更新了這篇文章,因爲格式化函數可以接受不同數量的參數,所以我不希望每個函數簽名都寫很多FormatSQLString。 – user1140560

+0

Again:你的字符串/格式化類是錯誤的地方來實現這一點。請參閱編輯答案。 –

相關問題