"之后我用Server.MapPath还是不行,"你是怎么用的?代码贴出来

解决方案 »

  1.   

    private String strConnection="Provider=Microsoft.Jet.OleDb.4.0; data source=" + Server.MapPath("dbWebIS.mdb");
      

  2.   

    Server.MapPath("dbWebIS.mdb")
    ->
    Server.MapPath(".")+"\\dbWebIS.mdb";
      

  3.   

    加<%@ Import Namespace="System.Web.UI" %>后
    private String strConnection="Provider=Microsoft.Jet.OleDb.4.0; data source=" + Server.MapPath(".")+"\\dbWebIS.mdb";
    还是错!
    wu wu..........
      

  4.   

    你的dbWebIS.mdb和这个执行的.aspx是放在一个文件夹下吗?
      

  5.   

    <%@ import Namespace="System.Data.OleDb" %>
    <%@ Import Namespace="System" %>
    <%@ Import Namespace="System.IO" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Web.UI" %>
    <HTML>
    <HEAD>
    <title>Subject Record</title>
    <script runat="server" language="C#">   private String strSQL="SELECT * FROM Subject";
          //private String strConnection="Provider=Microsoft.Jet.OleDb.4.0; data source=C:\\dbWebIS.mdb;";
          private String strConnection="Provider=Microsoft.Jet.OleDb.4.0; data source=" + Server.MapPath(".")+"\\dbWebIS.mdb";
          private OleDbConnection objConnection;
          private String SubjectTableName= "SubjectTable";
          private String strViewString= "SubjectID";
        
          private void Connect(){
        
        
           if(objConnection==null){
              objConnection=new OleDbConnection(strConnection);
           }
        
           if(objConnection.State==ConnectionState.Closed){
               objConnection.Open();
            }
        
          }
        
          private void Disconnect(){
        
             objConnection.Close();
          }
        
        
           private void LoadGrid(){
               Connect();
        
               OleDbDataAdapter adapter=new OleDbDataAdapter(strSQL, objConnection);
               DataSet ds=new DataSet();
               adapter.Fill(ds,SubjectTableName);
        
               Disconnect();
        
               DataTable dtSubject=ds.Tables[SubjectTableName];
               DataView dvView= new DataView(dtSubject);
               dvView.Sort=strViewString;
        
               dgSubject.DataSource=dvView;
               //dgStudent.DataSource=ds.Tables[StudentTableName];
               dgSubject.DataBind();
             }
        
        
         public void EditRecord(object sender, DataGridCommandEventArgs e){
        
           dgSubject.EditItemIndex=e.Item.ItemIndex;
           LoadGrid();
        
         }
        
         public void CancelEdit(object sender, DataGridCommandEventArgs e){
        
           dgSubject.EditItemIndex=-1;
           LoadGrid();
        
         }
        
          public void AddRecord(object sender, System.EventArgs e){
        
         String SubjectID=TextBox1.Text;
         String SubjectName=TextBox2.Text;
         String LecturerName=TextBox3.Text;
         
            
        
         if(SubjectID==""||SubjectName==""||LecturerName=="") {
          
        
           lblError.Text="Input Text can't be empty";
           lblError.Visible=true;
         }else{
         lblError.Visible=false;
        AddSubject(SubjectID,SubjectName,LecturerName);
         
         }
        
          LoadGrid();
        
         }
        
         public void UpdateRecord(object sender, DataGridCommandEventArgs e){
        
         String SubjectID=e.Item.Cells[0].Text;
         TextBox SubjectNameTextBox=(TextBox)e.Item.Cells[1].Controls[0];
         TextBox LecturerNameTextBox=(TextBox)e.Item.Cells[2].Controls[0];     String SubjectName=SubjectNameTextBox.Text;
         String LecturerName=LecturerNameTextBox.Text;
         
        
         dgSubject.EditItemIndex=-1;
        
         if(SubjectName==""||LecturerName=="") {
        
           lblError.Text="Input Text can't be empty";
           lblError.Visible=true;
         }else{
         lblError.Visible=false;
         UpdateSubject(SubjectID,SubjectName,LecturerName);
         }
        
          LoadGrid();
        
        // DataSet ds=new DataSet();
         //dgStudent.DataSource=ds.Tables[StudentTableName];
         //dgStudent.DataBind();
        
         }
        
          public void DeleteRecord(object sender, DataGridCommandEventArgs e){
        
         String SubjectID=e.Item.Cells[0].Text;
         dgSubject.EditItemIndex=-1;
        
         DeleteSubject(SubjectID);
          LoadGrid();
        
        // DataSet ds=new DataSet();
         //dgStudent.DataSource=ds.Tables[StudentTableName];
         //dgStudent.DataBind();
        
         }
        
         private void AddSubject(String SubjectID,String SubjectName,String LecturerName)
         
     {
        
         Connect();
         OleDbDataAdapter adapter=new OleDbDataAdapter(strSQL, objConnection);
         DataSet ds=new DataSet();
         adapter.Fill(ds,SubjectTableName);
         Disconnect();
        
        
         DataTable tbl= ds.Tables[SubjectTableName];
         //tbl.PrimaryKey= new DataColumn[] {tbl.Columns["StudentID"]};
        
        
         DataRow row=tbl.NewRow();
         row["SubjectID"]=SubjectID;
         row["SubjectName"]=SubjectName;
         row["LecturerName"]=LecturerName;
         
         tbl.Rows.Add(row);
        
         //DataRow row=tbl.Rows.Find(StudentID);
         //row["FamilyName"]=FamilyName;
         //row["GivenName"]=GivenName;
        
        OleDbCommandBuilder cb= new OleDbCommandBuilder(adapter);
         Connect();
         adapter.Update(ds, SubjectTableName);
         Disconnect();
        
         }
        
        
         private void UpdateSubject(String SubjectID,String SubjectName,String LecturerName)
         {
         Connect();
         OleDbDataAdapter adapter=new OleDbDataAdapter(strSQL, objConnection);
         DataSet ds=new DataSet();
         adapter.Fill(ds,SubjectTableName);
         Disconnect();
        
        
         DataTable tbl= ds.Tables[SubjectTableName];
         tbl.PrimaryKey= new DataColumn[] {tbl.Columns["SubjectID"]};
         DataRow row=tbl.Rows.Find(SubjectID);
         row["SubjectName"]=SubjectName;
         row["LecturerName"]=LecturerName;
         
        OleDbCommandBuilder cb= new OleDbCommandBuilder(adapter);
         Connect();
         adapter.Update(ds, SubjectTableName);
         Disconnect();
        
         }
        
          private void DeleteSubject(String SubjectID){
        
         Connect();
         OleDbDataAdapter adapter=new OleDbDataAdapter(strSQL, objConnection);
         DataSet ds=new DataSet();
         adapter.Fill(ds,SubjectTableName);
         Disconnect();
        
        
         DataTable tbl= ds.Tables[SubjectTableName];
         tbl.PrimaryKey= new DataColumn[] {tbl.Columns["SubjectID"]};
         DataRow row=tbl.Rows.Find(SubjectID);
         row.Delete();
        
           OleDbCommandBuilder cb= new OleDbCommandBuilder(adapter);
         Connect();
         adapter.Update(ds, SubjectTableName);
         Disconnect();
        
         }
        
          // OleDbCommand objCommand=new OleDbCommand(strSQL, objConnection);
          //
          // objConnection.Open();
          // dgStudent.DataSource=objCommand.ExecuteReader();
          // dgStudent.DataBind();
          // objConnection.Close();
        
        
        
         private void SortColumn(object sender, DataGridSortCommandEventArgs e){
        
           //if (e.SortExpression == "FamilyName"){
             //  strViewString="StudentID, FamilyName";
          // }else{
            //   strViewString=e.SortExpression;
              // LoadGrid();
        
          // }
        
         }
        
            private void Page_Load(object sender, System.EventArgs e)
           {
         if (Session["login"].ToString() != "yes") Response.Redirect("login.aspx");
           if(!IsPostBack)
           LoadGrid();
        
           }
        
            </script>
      

  6.   

    <meta content="Microsoft Visual Studio 7.0" name="GENERATOR">
    <meta content="C#" name="CODE_LANGUAGE">
    <meta content="JavaScript" name="vs_defaultClientScript">
    <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    </HEAD>
    <body ms_positioning="GridLayout">
    <form id="Form1" style="OVERFLOW: auto" method="post" runat="server">
    <asp:label id="Label1" style="Z-INDEX: 101; LEFT: 87px; POSITION: absolute; TOP: 320px" runat="server">Subject ID</asp:label><asp:label id="Label2" style="Z-INDEX: 102; LEFT: 87px; POSITION: absolute; TOP: 352px" runat="server">Subject Name</asp:label><asp:label id="Label3" style="Z-INDEX: 103; LEFT: 87px; POSITION: absolute; TOP: 384px" runat="server">Lecturer Name</asp:label><asp:textbox id="TextBox1" style="Z-INDEX: 109; LEFT: 221px; POSITION: absolute; TOP: 319px" runat="server"></asp:textbox><asp:textbox id="TextBox2" style="Z-INDEX: 110; LEFT: 221px; POSITION: absolute; TOP: 351px" runat="server"></asp:textbox><asp:textbox id="TextBox3" style="Z-INDEX: 111; LEFT: 221px; POSITION: absolute; TOP: 383px" runat="server"></asp:textbox><asp:button id="btnInsert" style="Z-INDEX: 117; LEFT: 91px; POSITION: absolute; TOP: 431px" onclick="AddRecord" runat="server" Width="67px" Text="Insert"></asp:button>
    <div style="Z-INDEX: 118; LEFT: 23px; OVERFLOW: auto; WIDTH: 763px; BORDER-TOP-STYLE: outset; BORDER-RIGHT-STYLE: outset; BORDER-LEFT-STYLE: outset; POSITION: absolute; TOP: 20px; HEIGHT: 229px; BORDER-BOTTOM-STYLE: outset" ms_positioning="FlowLayout"><asp:datagrid id="dgSubject" runat="server" Width="707px" Height="213px" PageSize="5" AllowCustomPaging="True" GridLines="None" CellPadding="3" BackColor="White" BorderWidth="2px" CellSpacing="1" BorderStyle="Ridge" BorderColor="White" onDeleteCommand="DeleteRecord" OnUpdateCommand="UpdateRecord" OnCancelCommand="CancelEdit" OnEditCommand="EditRecord" AutoGenerateColumns="False" OnSortCommand="SortColumn" AllowSorting="True">
    <SelectedItemStyle font-bold="True" forecolor="White" backcolor="#9471DE"></SelectedItemStyle>
    <ItemStyle forecolor="Black" backcolor="#DEDFDE"></ItemStyle>
    <HeaderStyle font-bold="True" forecolor="#E7E7FF" backcolor="#4A3C8C"></HeaderStyle>
    <FooterStyle forecolor="Black" backcolor="#C6C3C6"></FooterStyle>
    <Columns>
    <asp:BoundColumn DataField="SubjectID" HeaderText="Subject ID" ReadOnly="True"></asp:BoundColumn>
    <asp:BoundColumn DataField="SubjectName" HeaderText="Subject Name"></asp:BoundColumn>
    <asp:BoundColumn DataField="LecturerName" HeaderText="Lecturer Name"></asp:BoundColumn>
    <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Save" CancelText="Cancel" EditText="Edit"></asp:EditCommandColumn>
    <asp:ButtonColumn Text="Delete" CommandName="Delete"></asp:ButtonColumn>
    </Columns>
    <PagerStyle visible="False" horizontalalign="Right" forecolor="Black" backcolor="#C6C3C6"></PagerStyle>
    </asp:datagrid></div>
    <asp:label id="lblError" style="Z-INDEX: 119; LEFT: 272px; POSITION: absolute; TOP: 272px" runat="server" Width="228px" BorderStyle="Outset" Font-Size="Medium" Font-Bold="True" ForeColor="#C04000" Visible="False">Label</asp:label>
    </form>
    </body>
    </HTML>
      

  7.   

    private String strConnection="Provider=Microsoft.Jet.OleDb.4.0; data source=" + Server.MapPath(".")+"\\dbWebIS.mdb";
    改成:private string _strConn;
    private string strConnection
    {
       get {
          if( _strConn==null )
             _strConn ="Provider=Microsoft.Jet.OleDb.4.0; data source=" + Server.MapPath(".")+"\\dbWebIS.mdb";
          return _strConn;
       }
    }
      

  8.   

    yeah,成了.
    谢谢,
    能帮忙说说为什么吗?
      

  9.   

    因为你的变量声明的时候就初始化,这个时候Page.Server这个属性还没有值,也就是说初始化的时候只能使用静态的属性
    我把你的字段改成了属性,并且放到第一次访问的时候才初始化,这个时候就可以使用Server这个属性了