我只是做了一个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不存在!是怎么回事呢?

解决方案 »

  1.   

    是不是没有给session赋上值~
    Session["usrRole"] = role;
    在这个下面输出一下session["usrRole"]
      

  2.   

    根本运行不了啊,告诉我: 名称“Session”在类或命名空间“test.Form1”中不存在
      

  3.   

    session能用于C/S模式吗?窗体那样的,不是Web的?
      

  4.   

    winform用session干什么,Public一个公用变量不行啊?
      

  5.   

    WINFROM可以用SESSION吗?没做过,不知道勒...
      

  6.   

    B/S才能用SESSION吧,没听过C/S用这个的
      

  7.   

    webForm中,程序执行在Web服务器上,而界面执行在客户机的浏览器上,并且基本Web服务器是无状态的,因此Asp、Asp.Net等复杂而高级的服务机制为客户端维护Session保存状态。Web服务器和数据库服务器或者业务服务器之间,可不是用什么Session来识别Web应用程序的客户身份的,而是直接查询数据库或者查询业务服务器的业务对象。WinForm程序下载并且常驻客户端内存,不需要服务器来执行代码,在客户机器上运行的winForm就相当于在网站上运行的Asp.NET(而不是相当于客户机浏览器)。没有服务器端也就没有什么Session的必要。===================================直接定义一个全局变量或者是这样:专门定义一个类,用来专门保存与之相关的信息。使用的时候直接用这个类就行了
      

  8.   

    using System.Web.SessionState;我做web application时,在aspx文件里用到了session来传送数据至另一个aspx页面:Session["userName_login"]=userName;——在windows应用程序里好像不需要用session。
      

  9.   

    lz理解有错...在做Web form时候,每个页面实质是独立的(相当于运行了不同程序),因此要完成同一次访问中不同页面或者同一个页面多次刷新的数据共享就需要一些特殊的技术 这有很多方法实现 比如Session 比如Viewstate 比如Cache......
    WinForm完全没有这个问题 如果整个应用程序中需要调用某些共用的东西 可以直接定义一个静态类 或者使用单件设计模式
    public class MyApplicationSettings{
      private MyApplicationSettings(){}
      public static readonly MyApplicationSettings Instance=new MyApplicationSettings ();
    }然后使用MyApplicationSettings.Instance调用配置实例
      

  10.   

    Windows应用程序根本用不了Session
    楼上的方法可行