2011-08-31 57 views
0

問題的標題可能會引起誤解。我需要從XML文件中獲取屬性。然後,使用該屬性搜索數據庫。由於屬性的值是動態的,我必須嘗試將它作爲參數發送到SQL腳本的WHERE子句。但是,它總是返回無效的列錯誤。如何將參數傳遞給WHERE子句?

這裏是代碼的一部分:

string umail = ""; 
XDocument loaded = XDocument.Load(@"C:\1.xml"); 

var q = from c in loaded.Descendants("AdminUserDB.dbo.U_User") 
     select (string)c.Element("URI"); 

foreach (string em in q) 
    umail = em; 

SqlConnection cn = new SqlConnection("server=(local);database=AdminUserDB;Persist Security Info=True; uid=sa;pwd=pwd"); 
cn.Open(); 

DataSet ds = new DataSet(); 
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM dbo.U_User WHERE URI=umail", cn); 

.....

是否有此操作的任何其他方法?

感謝

SUT

+1

你所得到的錯誤,因爲在部分'URI = umail',數據庫期待'umail'是一個列,但你打算在那裏有一個值,所以你需要使用'@ umail'來標識它到'SqlDataAdapter',它是查詢中的一個參數 - 在它被髮送到數據庫之前將被替換。 – Zabba

回答

9

只需使用參數:

SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM dbo.U_User WHERE [email protected]", cn); 
da.SelectCommand.Parameters.AddWithValue("@umail", umail);