如何将表数据存储在不会被擦除的变量中

时间:2017-03-22 10:01:18

标签: c# mysql asp.net

所以我有一个if语句如下

DataTable table = new DataTable();

MySqlCommand select = new MySqlCommand("SELECT personID, address_addressID from person WHERE email='" + emailAddress + "' and password = '" + passwordR + "'", connect); //brings back the person ID if user details are correct            
using (MySqlDataAdapter adapter = new MySqlDataAdapter(select))
    {
        adapter.Fill(table);

        string sessionVar = table.Rows[0]["personID"].ToString();
        Session["personID"] = sessionVar;

        int sessionVarAddress = Int32.Parse(table.Rows[0]["address_addressID"].ToString());
        Session["address_addressId"] = sessionVarAddress;

我希望能够在if语句之外使用变量'sessionVar',这可能吗?

4 个答案:

答案 0 :(得分:1)

如果要在代码块之外使用变量,则必须在外部声明:

string sessionVar;
using (...)
{
    sessionVar = table.Rows[0]["personID"].ToString();
}

例如,如果是ifforeachwhile等块,您可能会遇到麻烦。无法保证变量将被设置。您必须设置默认值,或者在else分支中分配值。例如。

所以不喜欢这样:

string sessionVar;
if (...)
{
    sessionVar = table.Rows[0]["personID"].ToString();
}

// using sessionVar here will yield a compiler error.

但是像这样:

string sessionVar;
if (...)
{
    sessionVar = table.Rows[0]["personID"].ToString();
}
else
{
    sessionVar = null;
}

// using sessionVar is allowed now.

答案 1 :(得分:0)

首先,它不是if。

无论如何,你可以这样做:

DataTable table = new DataTable();
string sessionVar = "";

MySqlCommand select = new MySqlCommand("SELECT personID, address_addressID from person WHERE email='" + emailAddress + "' and password = '" + passwordR + "'", connect); //brings back the person ID if user details are correct            
using (MySqlDataAdapter adapter = new MySqlDataAdapter(select))
    {
        adapter.Fill(table);

        sessionVar = table.Rows[0]["personID"].ToString();
        Session["personID"] = sessionVar;

        int sessionVarAddress = Int32.Parse(table.Rows[0]["address_addressID"].ToString());
        Session["address_addressId"] = sessionVarAddress;

您必须使用空白字符串“”初始化它,否则它将无法编译!

答案 2 :(得分:0)

如果在使用之外声明,则可以获取sessionVar值。

var svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
var svgNS = svg.namespaceURI;

var rect = document.createElementNS(svgNS,'rect');
rect.setAttribute('x',5);
rect.setAttribute('y',5);
rect.setAttribute('width',500);
rect.setAttribute('height',500);
rect.setAttribute('fill','#95B3D7');
svg.appendChild(rect);
document.body.appendChild(svg);

现在您可以访问sessionVar值。

答案 3 :(得分:0)

我不确定我是否理解了您的问题,但您可以在if语句之前初始化变量,如:

string sessionVar = "";
if(condition){
...
sessionVar = table.Rows[0]["personID"].ToString();
...
}
//Use the variable after the 'if' statement.
var newString =  sessionVar;