0

我制作了一个小程序,它使用在 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表中(执行后,值 4820427 应分配给foundID

我对 SQL Server 完全陌生(对编程还是很陌生)。检查表中是否存在值的正确方法是什么?

4

2 回答 2

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
}

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

于 2013-08-12T10:51:09.557 回答
0

您是如何将 Access DB 转换为 MSSQL 的?

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

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

干杯。

于 2013-08-12T11:52:07.370 回答