3

我刚开始使用从别人那里继承的应用程序,但遇到了一些问题。该应用程序是用 C# 编写的,并针对 3.5 框架在 VS2010 中运行。我无法在我的机器上运行应用程序进行调试,因为它无法识别他们在编写数据库查询时引用参数的方式。

例如,无论他们有 SQL 或 DB2 查询,它都是这样编写的:

using (SqlCommand command = new SqlCommand(
    "SELECT Field1 FROM Table1 WHERE FieldID=@FieldID", SQLconnection))
{
    command.Parameters.AddWithValue("FieldID", 10000);
    SqlDataReader reader = command.ExecuteReader();
    ...

如果您会注意到“parameters.AddWithValue("FieldID", 10000);” 语句不包括原始命令文本中的“@”符号。当我在我的机器上运行它时,我收到一条错误消息,指出找不到参数“FieldID”。

我改变这一行:

command.Parameters.AddWithValue("FieldID", 10000);

对此:

command.Parameters.AddWithValue("@FieldID", 10000);

一切都很好......直到它遇到下一个 SQL 调用并出现同样的错误。显然这必须是视觉工作室中的一个设置,但我在互联网上找不到任何关于它的信息。SQL 参数添加的示例中有一半写了“@”,另一半不包括它。很可能我只是不知道要搜索什么。

最后的选择是将每个查询更改为在参数名称前面使用“@”,但这是用于管理公司货运的运输和运营应用程序,实际上有数千个参数。当回答导演的问题“进展如何?”时,很难解释项目的投资回报率。恰好是“我已经努力了一个星期,我几乎已经开始了。”

有没有人遇到过这个问题,或者你知道如何关闭这个设置,这样它就可以解析没有“@”的参数名称?

4

2 回答 2

1

成功!每当您创建 .NET 解决方案时,都会自动导入 System.Data。我删除了此引用并将其重新添加以确保我拥有此库的最新版本并解决了问题。我一定有这个库的旧版本,它最初是被拉进来的……只有我能想到的。

于 2011-04-05T19:59:36.863 回答
0

它由 .NET Framework 数据提供程序而不是 Visual Studio 处理。

这取决于数据源。看这里:使用参数占位符

您可以尝试与System.Data.Odbc提供者合作并使用question mark (?)占位符。在 thios 情况下,不要忘记按照它们在查询中的相同顺序添加参数。

于 2011-04-04T13:53:17.777 回答