c#按ID搜索ms访问数据库

dju*_*c12 2 c# search ms-access

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 + "%'";
        }
    }
Run Code Online (Sandbox Code Playgroud)

我想在我的c#app中通过ms访问数据库表进行搜索.上面的一个连接到"Table1",它有一些字段,如ID,名称,姓氏,地址...... ID类型设置为自动编号,所有其他字段设置为文本.我能够搜索除ID以外的所有字段,这种方式上面不会工作,当我尝试按ID搜索时我得到异常(我在txtbox中输入一些在db中的ID号,exmp:'1')搜索txtName工作正常.

Jas*_*own 5

自动编号是某种形式的数字(我认为很长)所以你不能使用LIKE关键字.您必须搜索完全匹配(或者更好,小于等).您也不能使用单引号括起数字,因此需要删除这些数字.

我将你的代码转换成这样的代码:

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

此外,如果您有多个填充数据的文本框(因为您没有使用其他if),您的代码看起来可能无法正常工作.无论你最后检查什么文本框最终将成为使用的过滤器,因为你每次都要重新分配过滤器变量.如果您直接从文本框中使用过滤器文本,那么您可以自己开始使用SQL注入.您应该考虑使用参数化查询.