Название "comportnumber" не существует в текущем контексте - PullRequest
0 голосов
/ 03 октября 2011

Я решил сохранить все настройки в SQL.В случае, если я хочу читать, напримерКомпортировать из базы данных SQL, а затем я получил ошибку: "c # имя" comportnumber "не существует в текущем контексте" Что я должен изменить, чтобы решить это?

    SqlCeConnection conn = new SqlCeConnection("Data Source = \\Program Files\\myprogram\\db.sdf; Password ='mypassword'");
        conn.Open();
            SqlCeCommand cmd = new SqlCeCommand("SELECT * FROM [COMPORT]", conn);
            SqlCeDataReader rdr = cmd.ExecuteReader();
            cmd.Connection = conn;
            cmd.ExecuteNonQuery();
            while (rdr.Read())
            {
                string comportnumber = rdr.GetString(0);
            }
        serialPort1.PortName = comportnumber;
        conn.Close();
        serialPort1.Close();
        if (!serialPort1.IsOpen)
            serialPort1.Open();

Ответы [ 2 ]

2 голосов
/ 03 октября 2011

Проблема с вашим вопросом заключается в том, что область действия переменной comportnumber была ограничена относительно небольшим разделом в скобках в цикле while.Просто переместите декларацию вверх.Но у вас есть и другие проблемы - обратите внимание, как я реструктурировал код.

string comportnumber = "";
using (SqlCeConnection conn = new SqlCeConnection("Data Source = \\Program Files\\myprogram\\db.sdf; Password ='mypassword'"))
using (SqlCeCommand cmd = new SqlCeCommand("SELECT * FROM [COMPORT]", conn))
{
    conn.Open();
    using (SqlCeDataReader rdr = cmd.ExecuteReader())
    {    
        while (rdr.Read())
        {
            comportnumber = rdr.GetString(0);
        }
    }
}
serialPort1.PortName = comportnumber;
serialPort1.Close();

if (!serialPort1.IsOpen)
    serialPort1.Open();
0 голосов
/ 03 октября 2011

По вашему мнению, comportnumber существует только в области цикла while.Попробуйте изменить его на:

string comportnumber = string.Empty;
while (rdr.Read())
{
    comportnumber = rdr.GetString(0);
}
serialPort1.PortName = comportnumber;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...