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工作正常.
自动编号是某种形式的数字(我认为很长)所以你不能使用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注入.您应该考虑使用参数化查询.
| 归档时间: |
|
| 查看次数: |
1515 次 |
| 最近记录: |