我只是做了一个Windows应用程序,数据库用的是Oracle,登录时的窗体(界面),根据输入的用户名和密码读出数据表中对应的那一行,其中包括USER_ROLE即权限这一列,存在Session中(我不懂啊,不知行不行啊)。在其他的窗体(界面),通过判断Session的值来确定次用户能执行什么操作,可是一直不对啊。使用Session是不是要设置什么啊?
下面是代码:
OracleConnection conn = new OracleConnection("Data Source=MYSW;User ID=TRANSFORMER;Password=1;");
string sql="select * from USERINFORMATION where
USER_NAME='"+txtUserName.Text+"' and USER_PASSWORD='"+txtUserPassword.Text+"'";
conn.Open();
OracleCommand cmd = new OracleCommand(sql,conn);
OracleDataAdapter thisAdapter = new OracleDataAdapter(sql,conn);
DataTable thisTable = new DataTable();
thisAdapter.Fill(thisTable);
string role;
role = thisTable.Rows[0][2].ToString().Trim();
Session["usrRole"] = role;
cmd.ExecuteNonQuery();
try
{
if(cmd.ExecuteReader().Read())
{
}
else
{
MessageBox.Show("您的用户名或密码不正确!");
txtUserName.Text ="";
txtUserPassword.Text ="";
return;
}
}
catch
{
MessageBox.Show("数据库没链接上吗?");
}
finally
{
conn.Close();
}
错误是Session不存在!是怎么回事呢?
下面是代码:
OracleConnection conn = new OracleConnection("Data Source=MYSW;User ID=TRANSFORMER;Password=1;");
string sql="select * from USERINFORMATION where
USER_NAME='"+txtUserName.Text+"' and USER_PASSWORD='"+txtUserPassword.Text+"'";
conn.Open();
OracleCommand cmd = new OracleCommand(sql,conn);
OracleDataAdapter thisAdapter = new OracleDataAdapter(sql,conn);
DataTable thisTable = new DataTable();
thisAdapter.Fill(thisTable);
string role;
role = thisTable.Rows[0][2].ToString().Trim();
Session["usrRole"] = role;
cmd.ExecuteNonQuery();
try
{
if(cmd.ExecuteReader().Read())
{
}
else
{
MessageBox.Show("您的用户名或密码不正确!");
txtUserName.Text ="";
txtUserPassword.Text ="";
return;
}
}
catch
{
MessageBox.Show("数据库没链接上吗?");
}
finally
{
conn.Close();
}
错误是Session不存在!是怎么回事呢?
Session["usrRole"] = role;
在这个下面输出一下session["usrRole"]
WinForm完全没有这个问题 如果整个应用程序中需要调用某些共用的东西 可以直接定义一个静态类 或者使用单件设计模式
public class MyApplicationSettings{
private MyApplicationSettings(){}
public static readonly MyApplicationSettings Instance=new MyApplicationSettings ();
}然后使用MyApplicationSettings.Instance调用配置实例
楼上的方法可行