我对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/

10-10 03:21