[英]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.