C# c按ID搜索ms access数据库

C# c按ID搜索ms access数据库,c#,ms-access,search,C#,Ms Access,Search,我想通过我的c应用程序中的ms access db表进行搜索。上面的一个连接到表1,其中有一些字段,如ID、姓名、姓氏、地址……ID类型设置为自动编号,所有其他字段设置为文本。我可以搜索除ID以外的所有字段,上述方法不起作用,当我尝试按ID搜索时,我会出现异常,我在txtbox中键入一些db中的ID号,exmp:'1' 通过txtName进行搜索很好。自动编号是一种很长的数字形式,我想你不能使用LIKE关键字。您必须搜索精确匹配或大于、小于等。。也不能用单引号括起数字,因此需要删除这些引号 我会

我想通过我的c应用程序中的ms access db表进行搜索。上面的一个连接到表1,其中有一些字段,如ID、姓名、姓氏、地址……ID类型设置为自动编号,所有其他字段设置为文本。我可以搜索除ID以外的所有字段,上述方法不起作用,当我尝试按ID搜索时,我会出现异常,我在txtbox中键入一些db中的ID号,exmp:'1'
通过txtName进行搜索很好。

自动编号是一种很长的数字形式,我想你不能使用LIKE关键字。您必须搜索精确匹配或大于、小于等。。也不能用单引号括起数字,因此需要删除这些引号

我会把你的代码换成这样:

private void Filtriraj()
    {
        string filter = string.Empty;
        if (txtID.Text.Length > 0)
        {
            filter = "ID LIKE '%" + txtID.Text + "%'";
        }
        if (txtName.Text.Length > 0)
        {
            filter = "Name LIKE '%" + txtName.Text + "%'";
        }
    }

此外,如果您的多个文本框中都填充了数据,则代码可能无法正常工作,因为您没有使用else if。最后选中的任何文本框最终都将成为使用的筛选器,因为每次都要重新分配筛选器变量。如果您直接使用文本框中的过滤文本,那么您就是在向可能的用户开放自己。您可能应该考虑使用。

好的,我仍然不知道如何搜索精确的match@djuvec12:我加了一个例子。TryParse用于确保ID文本框实际包含一个数字。否则,如果用户输入类似于ABC的内容,则在尝试搜索ID字段时将出现错误。@djuvec12:没问题。别忘了勾选这个小复选框,把答案标记为正确;顺便说一下,自动编号字段是有符号的32位整数。这在VBA中是一个长整数,在C中是一个整数。当然,除非它是一个自动编号字段,否则访问表设计器将其称为长整数。@phoog:Oops。。。我已经有几年没有使用Access了,所以我假设autonumber与大多数其他数据库一样是64位的。我改变了我的榜样。
.
.
.
if (txtID.Text.Length > 0)
{
    int id;
    if (Int32.TryParse(txtID.Text, out id))
    {
        filter = "ID = " + id.ToString();
    }
}
.
.
.