为什么这不起作用?这是=
附近的命令串语法,但我似乎无法弄明白,在线示例似乎完全相同。
修改:已激活为列。
示例
private void btnDist_Click(object sender, EventArgs e)
{
string cmdText = "SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated In = '#NA'";
SqlDataAdapter adapter = new SqlDataAdapter(cmdText, GetConnection());
DataSet distDS = new DataSet();
adapter.Fill(distDS);
dataGridView1.DataSource = distDS.Tables[0].DefaultView;
}
答案 0 :(得分:6)
如果数据库中列的名称为Activated In
(带空格),则在引用查询中的对象/列名称时需要使用方括号,例如:
SELECT * FROM Inventory WHERE Rep <> '#NA' AND [Activated In] = '#NA'
这是因为SQL将空格视为查询语言中的分隔符 - 方括号用于“转义”名称中的此(以及其他字符)。
或者,如果该列刚刚被调用Activated
,那么您不需要IN
位 - 测试是否相等或测试以查看该值是否在给定范围内,但不是做两件事。
-- Use this
SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated = '#NA'
-- Or this
SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated IN ('#NA', 'Some other value')
答案 1 :(得分:4)
将您的查询更改为不需要IN
关键字
SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated = '#NA'"
IN
- 用于过滤掉列表或子查询中的数据时使用。
答案 2 :(得分:2)
In
关键字的用法如下:
...AND Activated IN ('#NA')
...AND Activated IN ('#NA', 'other filter value', 'more filter values')
答案 3 :(得分:1)
Activated In = '#NA'"
这需要Activated In ('#NA')"
或Activated = '#NA'"
SQL中的In
运算符是保留的。
答案 4 :(得分:1)
在=
In
string cmdText = "SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated In ('#NA')";
您可能还想使用=
代替In
,因为您只指定了一个项目。
string cmdText = "SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated = '#NA'";
如果Activated In
是一列,请使用:
string cmdText = "SELECT * FROM Inventory WHERE Rep <> '#NA' AND [Activated In] = '#NA'";
答案 5 :(得分:1)
已激活是一列?那应该是 ActivatedIn 或 [Activated In]