繁体   English   中英

c# search ms access db by ID

[英]c# search ms access db by ID

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 + "%'";
        }
    }

我想通过我的 c# 应用程序中的 ms 访问数据库表进行搜索。 上面的一个连接到“Table1”,它有一些字段,如 ID、姓名、姓氏、地址...ID 类型设置为自动编号,所有其他都是文本。 我可以搜索除 ID 之外的所有字段,这种方式无法正常工作,当我尝试按 ID 搜索时出现异常(我在 txtbox 中输入数据库中的一些 ID 号,例如:'1')按 txtName 搜索工作正常。

自动编号是某种形式的数字(我认为很长),因此您不能使用 LIKE 关键字。 您必须搜索完全匹配(或大于、小于等)。 您也不能用单引号将数字括起来,因此需要将其删除。

我会将您的代码切换为以下内容:

.
.
.
if (txtID.Text.Length > 0)
{
    int id;
    if (Int32.TryParse(txtID.Text, out id))
    {
        filter = "ID = " + id.ToString();
    }
}
.
.
.

此外,如果您有多个填充数据的文本框(因为您没有使用 else if),您的代码看起来可能无法正常工作。 您最后检查的任何文本框最终都会成为使用的过滤器,因为您每次都重新分配过滤器变量。 而且,如果您直接从文本框中使用过滤器文本,那么您将自己打开可能的SQL Injection 您可能应该考虑使用参数化查询

暂无
暂无

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

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