所以我想使用SQL参数,在我的数据库有人的“奥布莱恩”你可以不使用参数想象一个姓这引起了我很多地狱,然后再开始尖叫在我告诉我,我应该已经使用paramaterised查询,我很新,正确使用SQL,并没有时间来学习如何正确地做到这一点,所以我刚刚使用字符串查询的时间因此,我的代码如下:SQL参数已经声明
//string constr = ConfigurationManager.ConnectionStrings["EBSLIVE"].ConnectionString;
string constr = ConfigurationManager.ConnectionStrings["EBSTEST"].ConnectionString;
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(constr))
{
using(SqlCommand cmd = new SqlCommand())
{
foreach (string name in StringNames)
{
string[] StuName = name.Split('|');
cmd.CommandType = CommandType.Text;
cmd.CommandText = "Select MOBILE_PHONE_NUMBER as Number From people Where FORENAME = @FORENAME and SURNAME = @SURNAME and PERSON_CODE = @PERSONCODE";
cmd.Parameters.AddWithValue("@PERSONCODE", StuName[0]);
cmd.Parameters.AddWithValue("@FORENAME", StuName[1]);
cmd.Parameters.AddWithValue("@SURNAME", StuName[2]);
cmd.CommandType = CommandType.Text;
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.Connection = con;
sda.SelectCommand = cmd;
using (DataSet ds = new DataSet())
{
DataTable ndt = new DataTable();
sda.Fill(ndt);
dt.Merge(ndt);
}
}
}
}
}
Numbers.AddRange(dt.Rows.OfType<DataRow>().Select(dr => dr.Field<string>("Number")).ToList());
但由于某种原因它告诉我@PERSONCODE已被声明。我不知道发生了什么。任何帮助,将不胜感激。
在commandtext语句下移动参数语句 – BugFinder
我怀疑你应该切换'using'和'foreach'-loop的顺序,所以在foreach循环中包装使用,你很好去 – nozzleman
还是不行工作后,我做了 –