2012-04-08 89 views
2

我必須使用「@」(我不知道它的名字)。我可以用它更新刪除或插入語句,但我不能在那裏使用它,它提供了URL必須聲明我怎樣才能把@放在select sql語句中?

 //SQL string to count the amount of rows within the OSDE_Users table 
     string sql = "SELECT * FROM RSSFeeds where URL = @URL"; 

     SqlCommand cmd = new SqlCommand(sql, Connect()); 

     cmd.Parameters.Add("@URL", SqlDbType.VarChar, 500).Value = url; 
     closeConnection(); 
     SqlDataAdapter adapt = new SqlDataAdapter(sql, Connect()); 
     DataSet ds = new DataSet(); 
     adapt.Fill(ds); 

     // result of query filled into datasource 
     adapt.Dispose(); 

     closeConnection(); 

     return ds; 
+1

什麼錯誤 – 2012-04-08 20:06:52

+4

是'URL'的'INT'?我感覺它不是。 – Ryan 2012-04-08 20:06:57

+0

@minitech很好。 – 2012-04-08 20:07:39

回答

4

我只能假設這條線是不正確的:

cmd.Parameters.Add("@URL", SqlDbType.Int).Value = url; 

大概網址不是int但一個的NVarChar或其它字符類型
如果是這種然後情況改變你的線以這種方式
(255所在領域URL的假定長度)

cmd.Parameters.Add("@URL", SqlDbType.NVarChar, 255).Value = url; 

而且,順便說一句,「@」被稱爲「參數前綴」

編輯:看到從OP更新我的答案顯示什麼,我認爲是走在正確的方式最後的編輯。

//SQL string to count the amount of rows within the OSDE_Users table 
    string sql = "SELECT * FROM RSSFeeds where URL = @URL"; 
DataSet ds = new DataSet(); 
    using(SqlConnection cnn = Connect()) 
    using(SqlCommand cmd = new SqlCommand(sql, cnn)) 
    { 
     cmd.Parameters.Add("@URL", SqlDbType.VarChar, 500).Value = url; 
     using(SqlDataAdapter adapt = new SqlDataAdapter(cmd)) 
     { 

      adapt.Fill(ds); 
     } 
    } 
    return ds; 

我已經改變了:

  • 封裝在using語句中的每個一次性對象 保證關閉/釋放對象
  • 調用連接()只是一個時間和拍攝的SqlConnection的返回到 重用,而無需創建一個又一個
  • 創建使用前(所以 的@U創建的SqlCommand的SqlDataAdapter的RL參數達到SQL)

的OP使用closeConnection(),我們沒有看到內部的這種方法,但我認爲using足夠的關閉和處置的連接。

編輯:創建SqlDataAdapter的應該是線

using(SqlDataAdapter adapt = new SqlDataAdapter(cmd)) 
+0

是的,它是真實的,但有是連接錯誤我猜這是它的原因是,SQL適配和SQL命令 – leventkalay92 2012-04-08 20:15:00

+0

對不起,無法想象從你的代碼。 – Steve 2012-04-08 20:18:09

+0

它給#url必須聲明。我該如何解決它? – leventkalay92 2012-04-08 21:03:55

1
cmd.Parameters.AddWithValue("@URL", url); 

應該工作