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

我正在使用以下代码过滤数据表以显示包含我的电子邮件地址的元组。但我不断收到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;

}


慕妹3146593
浏览 180回答 4
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}'";

桃花长相依

尝试这个。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;}

冉冉说

为什么在从数据库中获取整个数据后进行过滤?只需在查询本身中过滤它:select * from mytable where email = 'me@live.com'

森栏

试试这个,让我知道它是否有效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;}
打开App,查看更多内容
随时随地看视频慕课网APP