C# 如何将参数传递给WHERE子句?
这个问题的标题可能有误导性。我需要从XML文件中获取一个属性。然后,使用该属性搜索数据库。由于属性的值是动态的,所以我必须尝试将其作为参数发送到SQL脚本的WHERE子句。但是,它总是返回无效列错误 以下是代码的一部分:C# 如何将参数传递给WHERE子句?,c#,database,C#,Database,这个问题的标题可能有误导性。我需要从XML文件中获取一个属性。然后,使用该属性搜索数据库。由于属性的值是动态的,所以我必须尝试将其作为参数发送到SQL脚本的WHERE子句。但是,它总是返回无效列错误 以下是代码的一部分: string umail = ""; XDocument loaded = XDocument.Load(@"C:\1.xml"); var q = from c in loaded.Descendants("AdminUserDB.dbo.U_User")
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只需使用参数:
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM dbo.U_User WHERE URI=@umail", cn);
da.SelectCommand.Parameters.AddWithValue("@umail", umail);
出现错误是因为在部分
URI=umail
中,数据库希望umail
是一列,但您希望在其中有一个值,因此,您需要使用@umail
将其标识为SqlDataAdapter
,以确定它是查询中的一个参数,在将其发送到数据库之前,将替换它。