1

我有一个来自客户端应用程序的查询字符串。它带有所有参数,例如

string query="PROCS.DBO.APP_2370_ANALYST_S 'ABC' , 'TESTDATA' , 100";  

在服务器中,我创建了一个函数(Util.getParametersFromString)来解析来自客户端应用程序的字符串,以使用 string.Split 函数制作参数对象数组。我使用 ',' 和 ' ' 作为分隔符来制作对象数组。

我使用下面的代码执行 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";  

参数数组不正确。我不知道如何正确解析字符串

情况。请给我建议来解决这个问题

我英语不好。所以我很抱歉如果我没有正确写出我的问题

问候,公园

4

2 回答 2

1

如果您的查询字符串的两个参数都与您的示例一样灵活,并且您无法按照Oded 的答案中的建议更改此字符串的生成方式,那么您就有问题了。

例如,查询"PROCS.DBO.APP_2370_ANALYST_S 'ABC' , 'ABC' , 'ABC' , 100"可以解释为具有第一个参数"'ABC' , 'ABC'"和第二个参数"ABC",反之亦然。

另一方面,如果您的第一个参数可能不包含's,那么您可以通过在前两个's 之间查找来识别第一个参数,通过在第三个和最后一个之间查找来识别第二个参数'

于 2010-06-28T07:43:29.750 回答
1

您可以转义单引号 -'变为''

string query="PROCS.DBO.APP_2370_ANALYST_S 'A,B,C' , 'Hi, Sam ''The Legend'' Brown  was here ' , 100"; 

至于逗号的问题 - 这取决于您的函数是如何编写的。您必须转义逗号并确保您的函数知道此转义序列。

于 2010-06-28T06:58:09.403 回答