所以我想使用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
還是不行工作後,我做了 –