C# 输入字母表时从数据库执行搜索
我编写了一个代码,可以从数据库表中搜索特定的字符串。我想实现的是,当我们在facebook上搜索好友时,它会返回与给定输入匹配的结果,即使它是部分的 例如,如果我想在输入单字符后立即搜索ANDREW,那么如果我输入“an”like,则应开始显示结果 安迪 安德鲁 还有 这是我的文本框文本更改方法的代码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
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;