简体   繁体   English

语法错误:“学生”运算符后缺少操作数

[英]Syntax error: Missing operand after 'Student' operator

This is the code I have: 这是我的代码:

private void btnSearch_Click(object sender, RoutedEventArgs e)
{

        using (SqlConnection sc = new SqlConnection(sConn))
        {
            sc.Open();


            string SearchFor = txtSearch.Text;



            using (SqlDataAdapter adapter = new SqlDataAdapter())
            {
                DataTable dt = new DataTable();
                grdData.ItemsSource = dt.DefaultView.RowFilter = string.Concat("SELECT * FROM Student WHERE Forename LIKE '%", SearchFor, "%'");
            }

When I run the code I get: 当我运行代码时,我得到:

"Syntax error: Missing operand after 'Student' operator." “语法错误:“学生”运算符后缺少操作数。”

I'm using WPF... I want it so I can search for people by just typing a letter of their name what can I do? 我正在使用WPF ...我想要它,这样我就可以通过只输入姓名的字母来搜索人,该怎么办?

You need to fill your DataTable first with some data and then you can filter results 您需要先用一些数据填充DataTable ,然后才能过滤结果

using (SqlConnection sc = new SqlConnection(sConn))
{
   sc.Open();
   using (SqlDataAdapter adapter = new SqlDataAdapter())
   {
       adapter.SelectCommand = new SqlCommand("SELECT * FROM Student", sc);
       var dataset = new DataSet();
       adapter.Fill(dataset);
       var dt = dataset.Tables[0];
       var dv = dt.DefaultView;
       dv.RowFilter = String.Concat("[Forename] LIKE '%", SearchFor, "%'");
       grdData.ItemsSource = dv;
   }
}

or filter in SQL without RowFilter 或在没有RowFilter SQL中进行过滤

var cmd = new SqlCommand("SELECT * FROM Student WHERE Forename LIKE @forename", sc);
cmd.Parameters.AddWithValue("@forename", String.Concat("%", SearchFor, "%"));
adapter.SelectCommand = cmd;

In your filter, you only need to specify the WHERE clause , it's not a full SQL SELECT statement that is needed. 在您的过滤器中,您只需要指定WHERE子句 ,就不需要一个完整的SQL SELECT语句。 So it should look like this: 所以它应该看起来像这样:

grdData.ItemsSource = dt.DefaultView.RowFilter = string.Concat("Forename LIKE '%", SearchFor, "%'");

Be aware though, that a user could enter some characters like % , ' etc. 但是请注意,用户可以输入一些字符,例如%'等。

请进行如下更改。

dt.DefaultView.RowFilter ="Forename LIKE '%" + SearchFor + "%'"

The "RowFilter" query is not a complete SQL query but rather a subset of a SQL query. “ RowFilter”查询不是完整的SQL查询,而是SQL查询的子集。 In your case you want something like: 在您的情况下,您需要以下内容:

grdData.ItemsSource = dt.DefaultView.RowFilter = String.Format("[Forename] LIKE '%{0}%'", SearchFor);

For future reference: MSDN Documentation . 供将来参考: MSDN文档

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM