在VB.NET中检查数据库中是否存在值的最佳方法是什么?

时间:2016-04-22 14:38:16

标签: asp.net sql-server database vb.net

我熟悉在VB.NET中连接数据库以获取数据,但这次我的任务略有不同。在过去,我已经点击数据库从表中获取值以在我的应用程序中使用(名称,地址,价格等),但现在我只需要访问数据库来检查并查看是否存在值。我不知道解决这个问题的最佳方法。有没有一种好的,有效的方法来实现这一点,而无需从数据库中获取任何数据?

为了进一步说明,我想检查并查看当用户在文本框中输入值时,数据库中是否存在某个代码(这是一个ASP.NET网站项目)。如果代码存在,我将通过弹出框通知用户。

编辑:

如果我在SQL Server中创建一个存储过程,如果该值存在则返回true;如果它不是(或0或1),则返回false,如何在VB.NET中使用返回值?

3 个答案:

答案 0 :(得分:3)

如果您知道主键值或表格的其他唯一值,我知道检查特定记录是否存在的最快方式如下

Dim cmdText = "IF EXISTS(SELECT 1 FROM yourTable WHERE idField = @value) " & _
              "SELECT 1 ELSE SELECT 0"

Using cnn = new SqlConnection(.....)
Using cmd = new SqlCommand(cmdText, cnn)
    cnn.Open()
    cmd.Parameters.Add("@value", SqlDbType.Int).Value = 9876
    Dim result = Convert.ToInt32(cmd.ExecuteScalar())
    Dim exists = IF result = 1, True, False
    ....
End Using
End Using

这种方法比计算符合条件的记录更可取,因为数据库引擎在检查条件是否匹配后可以立即自由返回,而不是计数直到表的末尾。但是,当然,将执行搜索的字段编入索引至关重要。

有关MSDN上EXISTS operator的一些信息

答案 1 :(得分:2)

SELECT COUNT(*)FROM YourTableName WHERE CODE = @CODE

答案 2 :(得分:1)

我可能在这里遗漏了一些东西,因为它看起来太容易了!听起来你想要的就是沿着Table中Select Field的行执行一个简单的SQL查询,其中field = Value。 Command执行应返回所选行数,因此如果Return大于0则该项存在。

在运行时构造SQL命令时,使用在文本框中输入的项来提供值。

道歉,如果我错过了峰会!

从VB.net运行存储过程的VB.net KB: -

Running SPs from VB.net