2013-01-19 77 views
0

代码为res.aspx.cs 我无法读取从外地什么这行代码导致我的错误:如何读取Access数据库是/否数据类型下面

strStatus = rdr["rStatus"].ToString(); 

protected void Page_Load(object sender, EventArgs e) 
     { 

       OleDbConnection mDB = new OleDbConnection(); 
       mDB.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data source=" 
       + Server.MapPath("~/App_Data/Database.accdb"); 
       OleDbCommand cmd; OleDbDataReader rdr; 
       string strUserId = (string)Session["sUserId"]; 
       string strStatus; 
       string strSql = "SELECT rStatus FROM Reservation WHERE rUserId =" + strUserId 
       + " ORDER BY rStatus DESC;"; 
       cmd = new OleDbCommand(strSql, mDB); 
       cmd.Parameters.Add("@UserId", OleDbType.Char).Value = strUserId; 
       mDB.Open(); 
       rdr = cmd.ExecuteReader(); 
       strStatus = rdr["rStatus"].ToString(); 
      while (rdr.Read() == true) 




       // string strRStatus = (string)Session["srStatus"]; 
       // while (rdr.Read() == true) 

       if (strStatus == "-1") 
       { 


        DetailsView1.Visible = false; 
        Label2.Visible = false; 
        btnBuy.Visible = false; 
        DropDownList1.Visible = false; 
        btnCancel.Visible = false; 
        lblReserve.Text = "There is no resevation for user " + Session["sUserId"]; 

       } 
       else 
       { 
        lblReserve.Visible = false; 
        Label1.Visible = true; 
        Label2.Visible = true; 
        DetailsView1.Visible = true; 
        btnBuy.Visible = true; 
        DropDownList1.Visible = true; 
        btnCancel.Visible = true; 

       } 
      } 
+0

不要访问在读者面前你叫'阅读()'。 –

回答

4

尝试移动

strStatus = rdr["rStatus"].ToString(); 

给你打电话

012后
rdr.Read() 

编辑: 如果你想读一个SQL位值,你可以使用阅读器上的方法GetBoolean

bool myBoolean; 
if (!rdr.IsDBNull(columnIndex)) 
    myBoolean = rdr.GetBoolean(columnIndex); 
+0

不工作我不知道如何声明我的变量为strStatus,因为数据库的数据类型是布尔值 –

+0

亲爱的@MalcolmNathanielNg,我添加了一个关于如何使用阅读器读取布尔数据的简短片段。 –

+0

好吧让我试试 –

相关问题