<style>
td{font-size:12px};
</style>
<%@ Import Namespace="System.Data"%>
<%@ Import Namespace="System.Data.OleDb"%>
<script language="c#" runat="server">

void Page_Load(Object src,EventArgs e)
{
OleDbDataReader dr;
string str="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath(".")+"\\book.mdb;";
string sel="select book_name,book_tgr,book_mony from book";
OleDbConnection conn=new OleDbConnection(str);
OleDbCommand rs=new OleDbCommand(sel,conn);
rs.Connection.Open();
dr=rs.ExecuteReader();
}
</script>
<%
while(dr.Read())
{
%>
<%=dr["book_name"]%><br>
<%
}
%>
这样执行出错,但是把OleDbDataReader dr;脱离Page_Load放在上页执行,就可以了,为什么?
两者不都是一样吗,都是首先被定义!

解决方案 »

  1.   

    他的生命周期不一樣!!
    你這樣是放在Page_Load函數中,那麼他的周期只是在這個函數中草,又白接分
      

  2.   

    是不是除了Page_Load还有地方用到dr?
      

  3.   

    草,还真被 Edifier0709(腦袋重構中.....) 说中了!
    对!
    20分归你啦!
      

  4.   

    <style>
    td{font-size:12px};
    </style>
    <%@ Import Namespace="System.Data"%>
    <%@ Import Namespace="System.Data.OleDb"%>
    <script language="c#" runat="server">
    OleDbDataReader dr;
    void Page_Load(Object src,EventArgs e)
    {
    string str="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath(".")+"\\book.mdb;";
    string sel="select book_name,book_tgr,book_mony from book";
    OleDbConnection conn=new OleDbConnection(str);
    OleDbDataAdapter ds=new OleDbDataAdapter(sel,conn);
    DataSet pt=new DataSet();
    ds.Fill(pt,"tab");
    DataRow hh=pt.Tables["tab"].NewRow();
    hh["book_name"]="123";
    hh["book_tgr"]="123";
    hh["book_mony"]="123";
    pt.Tables["tab"].Rows.Add(hh);
    ds.Update(pt,"tab");
    //绑定数据到DataGrid中;
    table1.DataSource=pt.Tables["tab"].DefaultView;
    table1.DataBind();
    }
    </script>
    <asp:DataGrid id="table1" runat="server"/>
    这样为什么不能更新到数据库,出错!