【发布时间】:2016-05-25 22:30:59
【问题描述】:
我有一个应用程序,我必须将一天的选择改为一系列天。在 Management Studio 中运行的查询有效并返回正确的结果。但是在应用程序中没有返回任何内容。
代码:
SqlCommand com = new SqlCommand();
com.Connection = Program.ConnnectDatabase();
com.CommandText = Resources.FillProcessing;
string strDay = string.Empty;
if (cboProcessDay.Text.ToString().Trim() == "Monday")
strDay = "'Monday'";
com.Parameters.Add(new SqlParameter("@Day", strDay));
DataTable dt = new DataTable();
SqlDataAdapter adt = new SqlDataAdapter();
adt.SelectCommand = com;
adt.Fill(dt);
SQL:
SELECT data.*
FROM Rec_data data, acc_info info
WHERE Day IN (@Day)
AND info.foracid = data.foracid
知道我做错了什么吗?
【问题讨论】:
-
试试不带引号的
strDay = "Monday" -
Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI
JOIN语法-92 SQL 标准(20 多年前),不鼓励使用它 -
您在查询中面临
Day关键字。这可能会导致错误。尝试将 Day 包含在单个开盘报价中。 -
如果查询什么都不返回,那是因为没有什么可以返回。您要求使用单引号括起来的日期名称,即
'Monday'。我怀疑数据库中没有这样的行。您可能只想搜索Monday并使用 T-SQL 语法意外转义了该值,即使它已经是 C# 字符串
标签: c# sql-server