【发布时间】:2018-12-20 03:46:36
【问题描述】:
我正在使用以下代码过滤数据表以显示包含我的电子邮件地址的元组。但我不断收到Missing Operand after @ 错误。
using (SqlConnection connection = new SqlConnection(conn))
{
connection.Open();
SqlCommand mycommand = new SqlCommand("select * from mytable",connection);
// SqlDataReader dataReader = mycommand.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(mycommand.ExecuteReader());
string value = "me@live.com";
DataView dv = new DataView(dt);
dv.RowFilter = "email = "+value;
dataGridView1.DataSource = dv.ToTable();
// dataGridView1.DataSource = dt;
}
【问题讨论】:
-
无需使用 DataView 来处理这些问题。您可以直接将过滤器应用于 DataSource 甚至是持久 DT。 docs.microsoft.com/en-us/dotnet/api/…
-
只需在
SqlCommand中使用具有指定值的where子句 - 无需在DataTable填充后对其进行过滤。 -
也可以尝试用单引号将值括起来——因为
@是一个特殊字符,用来标识查询参数,应该转义为字符串。 -
@TetsuyaYamamoto 单引号解决了问题
-
正如@Developer 在他的回答中所问的那样,您真的需要从数据库中获取 所有 行吗?如果没有,如果让数据库而不是您的应用程序进行过滤会更好。
标签: c# sql sql-server datatable dataview