我正在编写一个 VS 2012 C# WinForms 应用程序,其中包含我需要与数据库匹配的数据列表。我拥有的列表仅包含“PROPNUM”值,例如 I8KJ7SNRXY 之类的字符串。我希望能够遍历列表和数据库,以查明列表中是否有 PROPNUM 的相应条目。
这是我将所有信息放入列表的代码,
con7 = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath);
ad7.SelectCommand = new OleDbCommand("SELECT b.PROPKEY FROM [PROJECT]
a INNER JOIN [PROJLIST] b on a.PROJKEY=b.PROJKEY WHERE a.NAME =
'" + (string)comboBox2.SelectedItem + "'", con7);
ds7.Clear();
con7.Open();
ad7.SelectCommand.ExecuteNonQuery();
ad7.Fill(ds7);
con7.Close();
List<string> propnumList = new List<string>();
foreach (DataRow drRow in ds7.Tables[0].Rows)
{
for (int i = 0; i < ds7.Tables[0].Columns.Count; i++)
{
propnumList.Add(drRow[i].ToString());
}
}
这是我试图用来查找匹配值的代码,
foreach (string propnum in propnumList)
{
int selection = comboBox1.SelectedIndex;
string endDate = "ENDDATE";
string qual = ds2.Tables["AC_SCENARIO"].Rows[0][selection].ToString(); //if qual is null break out of for //if qual is found store and move onto next property
MessageBox.Show(qual);
ad.SelectCommand = new OleDbCommand("SELECT b.PROPNUM,
a.QUALIFIER, b.KEYWORD, b.EXPRESSION FROM [AC_ECONOMIC]
b INNER JOIN [AC_SCENARIO] a on a.PROPNUM=b.PROPNUM
WHERE QUALIFIER = '" + qual + "' AND PROPNUM = '" +
propnum + "' AND KEYWORD = '"+endDate+"' AND NOT
EXPRESSION LIKE '%[/@]%'", con);
ds2.Clear();
con.Open();
ad.SelectCommand.ExecuteNonQuery();
ad.Fill(ds2);
con.Close();
}
我收到一条错误消息,提示“没有为一个或多个必需参数提供值”。所以我认为第二个查询有问题。如果有人可以帮助我遍历与列表匹配的数据库,那将不胜感激。