我有一个来自客户端应用程序的查询字符串。它带有所有参数,如
string query="PROCS.DBO.APP_2370_ANALYST_S 'ABC' , 'TESTDATA' , 100";
在Server中,我创建了一个函数(Util.getParametersFromString)来解析来自客户端应用程序的字符串,以使用string.Split函数生成参数对象Array。 我使用','和''作为分隔符来制作对象数组。
我使用下面的代码执行db过程
object[] parameters = Util.getParametersFromString(query);
DbCommand cmd = dbconnection.GetStoredProcCommand("PROCS.DBO.APP_2370_ANALYST_S", parameters);
如果参数字符串不包含逗号或单引号,我的效果很好。 如果参数字符串之一具有一个或多个逗号或单个配额标记。 如下所示
string query="PROCS.DBO.APP_2370_ANALYST_S 'A,B,C' , 'Hi, Sam 'The Legend' Brown was here ' , 100";
参数数组未正确显示。我不知道如何在这个
中正确解析字符串情况。请给我建议解决这个问题
我不擅长英语。所以我很抱歉如果我没有正确地写我的问题
此致 公园
答案 0 :(得分:1)
您可以转义单引号 - '
变为''
:
string query="PROCS.DBO.APP_2370_ANALYST_S 'A,B,C' , 'Hi, Sam ''The Legend'' Brown was here ' , 100";
至于逗号的问题 - 这取决于函数的编写方式。您必须转义逗号,并确保您的函数知道此转义序列。
答案 1 :(得分:1)
如果查询字符串的两个参数都与示例一样灵活,并且您无法按照Oded's answer中的建议更改生成此字符串的方式,则表示您遇到了问题。
例如,查询"PROCS.DBO.APP_2370_ANALYST_S 'ABC' , 'ABC' , 'ABC' , 100"
可以解释为具有第一个参数"'ABC' , 'ABC'"
和第二个参数"ABC"
,反之亦然。
另一方面,如果您的第一个参数可能不包含'
s,那么您可以通过在前两个'
之间查找来识别第一个参数,并在第二个参数之间查找第三个和最后一个'
。