【发布时间】:2021-04-27 07:17:21
【问题描述】:
您好,我必须为 {0}{1} 添加动态参数,但我不知道它是如何工作的。有人可以帮我解释一下吗?
string strCmdExclChainLast = string.Format("SELECT SUM(F9H.PCPQ9H) AS ValueLast " +
"FROM {3}.F9H00 F9H " +
"WHERE F9H.PCPU9H = " +
"(SELECT C02.YMDU02 " +
"FROM {3}.C0200 C02 " +
"WHERE C02.HTYC02 = '0' AND C02.YMDU02 < {0}{1}{2} " +
"ORDER BY C02.YMDU02 DESC " +
"FETCH FIRST ROW ONLY) " +
"AND F9H.LN1C9H NOT IN ('130', '211', '311', '360', '411', '530', '540')",
DateTime.Now.Year,
DateTime.Now.Month.ToString().Length == 1 ? "0" + DateTime.Now.Month.ToString() : DateTime.Now.Month.ToString(),
DateTime.Now.Day.ToString().Length == 1 ? "0" + DateTime.Now.Day.ToString() : DateTime.Now.Day.ToString(),
Program.Wavedlib);
dtExclChain.Rows[0]["ValueLast"] = DBOps.ExecDataTableDB2AS400(strCmdExclChainLast).Rows[0]["ValueLast"];
【问题讨论】:
-
不要连接字符串:使用参数。
-
您的 DBMS 是什么?你用什么与 C# 中的数据库进行通信? Mitch 是对的,我们通常会有一个数据库类,让我们可以直接将参数作为日期传递。但是,这不适用于架构名称。 YMDU02 是什么数据类型?你的查询结果是什么?您是否从 DBMS 收到错误消息?
-
为什么你必须通过日期?你的 DBMS 不知道今天是星期几吗?
-
DBMS = 数据库管理系统,意思是,你使用的“数据库引擎”是什么。例如:MySQL、Microsoft SQL Server、Oracle DB、Sqlite、PostgreSQL,……每个都使用自己的 SQL 语言“风味”,以及一些内部细节,以及一些可能或可能不是的特性在其他人中可用或建议使用。