Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 输入字母表时从数据库执行搜索_C#_Sql_Desktop Application - Fatal编程技术网

C# 输入字母表时从数据库执行搜索

C# 输入字母表时从数据库执行搜索,c#,sql,desktop-application,C#,Sql,Desktop Application,我编写了一个代码,可以从数据库表中搜索特定的字符串。我想实现的是,当我们在facebook上搜索好友时,它会返回与给定输入匹配的结果,即使它是部分的 例如,如果我想在输入单字符后立即搜索ANDREW,那么如果我输入“an”like,则应开始显示结果 安迪 安德鲁 还有 这是我的文本框文本更改方法的代码 table = new DataTable(); table.Columns.Add("Name"); table.Columns.Add("Type"); tab

我编写了一个代码,可以从数据库表中搜索特定的字符串。我想实现的是,当我们在facebook上搜索好友时,它会返回与给定输入匹配的结果,即使它是部分的 例如,如果我想在输入单字符后立即搜索ANDREW,那么如果我输入“an”like,则应开始显示结果 安迪 安德鲁 还有

这是我的文本框文本更改方法的代码

    table = new DataTable();
    table.Columns.Add("Name");
    table.Columns.Add("Type");
    table.Columns.Add("Status");
    table.Columns.Add("Date Created");
    table.Columns.Add("Action");

    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.Parameters.Add("@username", SqlDbType.VarChar).Value = textBoxSearch.Text;
    cmd.CommandText = "SELECT id,uName,uType,uStatus,uDate from users WHERE uName=@username ";

    SqlDataReader dr = cmd.ExecuteReader();
    if (dr.HasRows == true)
    {
        while (dr.Read())
        {
            MessageBox.Show(dr["uName"].ToString() + dr["uType"].ToString() + dr["uStatus"].ToString());
            row = table.NewRow();
            row["Name"] = dr["uName"].ToString();
            row["Type"] = dr["uType"].ToString();
            row["Status"] = dr["uStatus"].ToString();
            row["Date Created"] = dr["uDate"].ToString();
            // row["Action"] = new Button();
            table.Rows.Add(row);
            UsersView.DataSource = table;
        }//End While for entering peresent amount of data                   
    }//End If to check wether or not users exist
    dr.Close();//Close Datareader
}

要回调数据库,CommandText变为

... WHERE uName LIKE @username + '%'
但是,我不会每次都回数据库:我会使用自动完成控件。Winforms有几种

既然你用的是C#,为什么不换些更灵巧的呢

设置您的LINQ数据库上下文文件,并使用以下代码实现您想要实现的目标(快速键入此项,如果有任何错误,请抱歉):


根据您的示例,它会给出“A%”,并且我已经实现了自动完成文本框,但在数据网格视图的情况下,我如何才能做到这一点??由于有3个值名称类型日期创建等??有一个错误DbDataContext不在上下文中。我不知道如何使用LINQ您是否已准备好设置dbml文件?DbDataContext将引用该dbml文件的名称。如果您需要了解绝对基础知识,请使用此视频:,或者如果您想真正深入地了解它,我建议您在此处推荐一本关于LINQ的书或整个系列:
table = new DataTable();
table.Columns.Add("Name");
table.Columns.Add("Type");
table.Columns.Add("Status");
table.Columns.Add("Date Created");
table.Columns.Add("Action");

var db = new DbDataContext();
var users = (from u in db.users
             where u.Contains(textBoxSearch.Text)
             select u).ToList();
foreach(var user in users)
{
     MessageBox.Show(user.uName + user.uType + user.uStatus);
            row = table.NewRow();
            row["Name"] = user.uName;
            row["Type"] = duser.uType;
            row["Status"] = user.uStatus;
            row["Date Created"] = user.uDate.ToShortDateString();
            table.Rows.Add(row);
}

UsersView.DataSource = table;