我对public -v- private变量和范围有一些疑问。
这是我的代码
private void PopulateCaseViewer(string paramField, string paramValue)
{
string strConnection = BuildConnectionString();
SqlConnection linkToDB = new SqlConnection(strConnection);
if (paramField == "load")
{
string sqlStat = "SELECT c.CaseNo, c.Claimant, c.Defendant, c.DOA, c.CaseType, c.CaseManager, c.Occupation, c.DateInstruction " +
"a.IPName, a.IPRegion, l.IPReference " +
"FROM tblCases AS c INNER JOIN tblIPLinks as l ON c.CaseNo = l.CaseNo " +
"JOIN tblIPAddresses AS a ON l.IPID = a.IPID;";
}
using (linkToDB)
using (var adapter = new SqlDataAdapter(sqlStat, linkToDB))
{
var table = new DataTable();
adapter.Fill(table);
dataCaseViewer.DataSource = table;
}
}
问题是,“正在使用(var adapter = new SqlDataAdapter。...)”行中的字符串sqlStat指出sqlStat'在当前上下文中不存在'。
我旨在根据传递给它的paramField和paramValues在此方法上添加许多IF语句,以便构建不同的sqlStats来依赖于User输入来填充dataCaseViewer.DataSource。但是,如果IFData语句中的sqlStat variale在SqlDataAdapter中的后续调用中看不到,那我就有点卡住了。
有任何建议请。
最佳答案
那是因为您在它上面的IF语句内定义了sqlStat,这使其仅在该语句内有效。
在IF上方定义sqlStat,在IF内进行设置,它应该可以正常工作。
string sqlStat = System.String.Empty;
if (paramField == "load")
{
sqlStat = "SELECT...";
关于c# - 方法中使用的变量的C#上下文错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8897768/