Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将参数传递给WHERE子句?_C#_Database - Fatal编程技术网

C# 如何将参数传递给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")

这个问题的标题可能有误导性。我需要从XML文件中获取一个属性。然后,使用该属性搜索数据库。由于属性的值是动态的,所以我必须尝试将其作为参数发送到SQL脚本的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

只需使用参数:

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

出现错误是因为在部分
URI=umail
中,数据库希望
umail
是一列,但您希望在其中有一个值,因此,您需要使用
@umail
将其标识为
SqlDataAdapter
,以确定它是查询中的一个参数,在将其发送到数据库之前,将替换它。