【发布时间】:2021-05-07 21:34:02
【问题描述】:
我正在尝试编写一个小型 c# 应用程序来连接到 ProgressDB,但我在很早的阶段就失败了……编写一个带参数的查询。就上下文而言,直到上周我才取得进展(我是主流的 MSSQL 猴子)
如果我在 TSQL 中编写查询,那就是
DECLARE @Id nvarchar(15) = 'X1234'
SELECT * from People WHERE Id = @Id
现在我可以使用 ODBC 查询工具编写硬编码的选择语句以获取进度
Select * from People where "Id" = 'X1234'
但我不知道如何对其进行参数化,我查看了 Progress/OpenEdge KB,但它似乎不像 X = "Y" call X 那样简单。
我可以在我的 C# 代码中做一些非常混乱的事情(还有让我的高级开发人员哭泣的额外好处)并执行以下操作:
string sqlstr = "Select * from People where " + "\"" + "Id" + "\" ' = " + id + "'";
但我真的很想做这样的事情。显然这是使用 SqlConnection 而不是 OdbcConnection 但这是明天我要解决的问题(明天我不太喜欢昨天的我)
public async Task<IEnumerable<Data>>GetMeMyData(string id)
{
using (var connection = new SqlConnection(_configuration.GetConnectionString("MyDB")))
{
var sqlQuery = "Select * from People where \"ID\" = '@Id'";
return await connection.QueryAsync<Data>(sqlQuery, new { Id = id });
}
}
非常感谢任何指向良好 eli5/babies 首次进度查询的建议或链接谢谢(希望一切都有意义)。
【问题讨论】:
标签: c# openedge progress-db