Bug #13036 Returns error when field names contain any of the following chars %<>()/ etc
Submitted: 7 Sep 2005 14:52 Modified: 23 Sep 2005 17:40
Reporter: Rob Cairns
Status: Closed
Category:Connector/Net Severity:S3 (Non-critical)
Version:1.0.5 OS:Microsoft Windows (Windows XP Professional)
Assigned to: Reggie Burnett Target Version:

[7 Sep 2005 14:52] Rob Cairns
Description:
When field names have special characters - update returns an error

How to repeat:
Use a field name containing any of the following characters : ()%<>/

Suggested fix:
Here is my quick and dirty fix in CommandBuilder.cs:
		
                          private static string GetParameterName(string columnName)
		{
			string colName = columnName.Replace(" ", "");
			//Rob Cairns
			colName = colName.Replace("/", "_per_");
			colName = colName.Replace("-", "_");
			colName = colName.Replace(")", "_cb_");
			colName = colName.Replace("(", "_ob_");
			colName = colName.Replace("%", "_pct_");
			colName = colName.Replace("<", "_lt_");
			colName = colName.Replace(">", "_gt_");
			colName = colName.Replace(".", "_pt_");
			return colName;
		}
[14 Sep 2005 18:56] Reggie Burnett
Rob

Thanks for the bug report and the patch.  I took your code and used it (tweaked to use
StringBuilder).  It may feel like a quick and dirty hack but it actually works pretty
well.  The problem is that the TokenizeSql routine I have stops when it sees a
nonalphanumeric.  This could be changed but the tokenizer would never be able to support )
in the paramter name since ) also terminates the list of parameters.  Using this technique
you can use ) in your field name.  Not sure why you would though... :-)
[15 Sep 2005 20:21] Mike Hillyer
Added to 1.0.6 changelog:

<listitem><para>Field names that contained the following characters caused errors:
<literal>()%&lt;&gt;/</literal> (Bug #13036)</para></listitem>