2013-11-22 30 views

回答

2

一個簡單的選擇與COUNT去應該做的伎倆:

SELECT COUNT(*) 
FROM myTableWithUrl 
WHERE URL='http://www.stackoverflow.com' 

這個查詢總是會返回一個單行一個整數列。零表示該URL不存在;任何其他數字表示該URL在那裏。

如果您在URL列上定義索引,查詢可能會更快。

+0

我該如何處理答案?像'If count = 0 Then ...' – gromit1

+1

@ gromit1正確,這就是你所做的 - 你準備好命令,通過調用'myCommand.ExecuteScalar()'方法來執行標量結果,將它轉換爲'Integer',並檢查結果:'如果count = 0 ...'那麼URL不存在。您應該將URL作爲SQL命令參數發送。這裏是[在VB中使用'ExecuteScalar'的例子](http://stackoverflow.com/a/9466724/335858) – dasblinkenlight

+0

如何將Count設置爲一個變量並將其加載到SQL的結果中? – gromit1

1

我會

select count(*) records 
from yourtable 
where url = something 
1

這是您的班級代碼,其中列名是包含Url值的列的名稱。

Imports System.Data.Oledb 


    Dim con As New OledbConnection("Provider=microsoft.Jet.oledb.4.0DataSource=D:\mydata.mdb;") 

    Dim cmd As New OledbCommand 

    Public var1 As String 
    Public url As String 

    Public Sub New() 

     con.Open() 

     cmd.Connection = con 
     cmd.CommandText = "SELECT COUNT(*) FROM table1 WHERE *columnname* ="+url 
     Dim result = cmd.ExecuteScalar() 
     if Convert.ToInt32(result) = 0 Then //YourStuff 
    End Sub 
+0

這不應該等於等號嗎? –

+0

是的,我改編了我的代碼 –

1

best在性能方面的方法是獲得第一個匹配記錄。對所有記錄進行計數意味着您必須在返回結果之前查看所有匹配的記錄。最高性能的解決方案是在找到第一個匹配記錄後停止處理,因爲在第一場比賽之後有答案時,不必保留所有記錄。

可以與此查詢來完成:

SELECT TOP 1 URL FROM TABLE 
WHERE URL = 'http://www.stackoverflow.com' 

如果你得到URL那麼URL是存在的。如果你得到一個空的結果集,那麼它不是。理想情況下,URL已編入索引。

相關問題