检查SQL表中是否存在值

时间:2013-08-12 10:27:11

标签: c# sql sql-server database

我制作了一个小程序,它使用在MS Access中创建的数据库。为了学习新东西,我决定通过将数据库迁移到SQL Server来改进它。

在C#中使用Access DB时,我使用此代码检查特定表的特定列中是否存在该值:

//if the scanned tag already exists in the Student table...
var foundID = autoRegDataSet.Student.Select("TagID = '" + tagNo + "'");
if (foundID.Length != 0)
//do something

更改为SQL Server后,这段代码返回" null"结果,尽管如此,我在Student表中存在寻找DOES的值(执行后,值4820427应该分配给foundID

我对SQL Server完全陌生(对编程来说还是一个新手)。检查表中是否存在该值的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

问题中有很多不清楚的事情,但我怀疑这里最大的问题是TagID是数字类型还是字符串类型。但是,还有一个很重要的问题就是为什么它会进入数据集。

但;回到实际问题 - 检查是否存在值;我会做一些事情(使用dapper来简化正确的参数化):

// where tagNo is a local variable...
int? id = connection.Query<int?>(
    "select Id from Student where TagID=@tagNo", new { tagNo }
).FirstOrDefault();
if(id == null) {
    // doesn't exist
} else {
    // exists, plus you now know the id - it is: id.Value
}

但最终,如果您的原始代码在DataSet中工作,它应继续工作 - 如果不是,我怀疑您已经搞砸了架构(可能是一列)那是string现在是int或类似的。)

答案 1 :(得分:0)

您是如何将Access数据库转换为MSSQL的?

查看TagID的dataType是什么,它可能是整数,
那么删除''引号会很有用。

object foundID = autoRegDataSet.Student.Select("TagID = " + tagNo);

干杯。