为了账号安全,请及时绑定邮箱和手机立即绑定

过滤数据表-@后缺少操作数

过滤数据表-@后缺少操作数

C#
慕妹3146593 2022-06-19 16:19:50
我正在使用以下代码过滤数据表以显示包含我的电子邮件地址的元组。但我不断收到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;}
查看完整描述

4 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

这里:


string value = "me@live.com";

DataView dv = new DataView(dt);

dv.RowFilter = "email = "+value;

你正在做的是:


DataView dv = new DataView(dt);

dv.RowFilter = "email = me@live.com";

因此,您缺少包含文字字符串的撇号。你应该改用这个:


string value = "'me@live.com'";

所以得到的过滤器是:


dv.RowFilter = "email = 'me@live.com'";

由于您可能从其他地方收到电子邮件(而不是硬编码在文件中),如果您使用的是 C# 6.0 或更高版本,则可以改为:


string value = "me@live.com";

DataView dv = new DataView(dt);

dv.RowFilter = $"email = '{value}'";


查看完整回答
反对 回复 2022-06-19
?
桃花长相依

TA贡献1860条经验 获得超8个赞

尝试这个。


using (SqlConnection connection = new SqlConnection(conn))

{

  connection.Open();

  var query = "select * from mytable WHERE email = 'me@live.com'";

  SqlCommand mycommand = new SqlCommand(query,connection);

  // SqlDataReader dataReader = mycommand.ExecuteReader();

  DataTable dt = new DataTable();

  dt.Load(mycommand.ExecuteReader());

  DataView dv = new DataView(dt);


  dataGridView1.DataSource = dv.ToTable();

  // dataGridView1.DataSource = dt;

}


查看完整回答
反对 回复 2022-06-19
?
冉冉说

TA贡献1877条经验 获得超1个赞

为什么在从数据库中获取整个数据后进行过滤?只需在查询本身中过滤它:

select * from mytable where email = 'me@live.com'


查看完整回答
反对 回复 2022-06-19
?
森栏

TA贡献1810条经验 获得超5个赞

试试这个,让我知道它是否有效


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 LIKE %'" + value + "'%";


  dataGridView1.DataSource = dv.ToTable();

  //  dataGridView1.DataSource = dt;

}


查看完整回答
反对 回复 2022-06-19
  • 4 回答
  • 0 关注
  • 179 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号