2015-02-12 25 views
3

我正在使用Visual Studio 2013中的C#和ASP.net數據庫的數據輸入表單。我試圖建立的是一種形式,可以讓我將任天堂電力雜誌的Top 30調查結果輸入數據庫中的表格。ASP.net無法附加文件作爲數據庫

有問題的頁面的計劃是有一個GridView,所以我可以看到我已經輸入了什麼結果,以及將用於實際數據輸入的FormView。爲了簡化這個過程,我通過下拉菜單選擇問題和遊戲,爲了避免混淆NES的「鴨子故事」和Game Boy的「鴨子故事」,我設置了一個額外的下拉菜單菜單來選擇遊戲已發佈的系統。反過來,該菜單的結果將決定遊戲將在「遊戲」下拉列表中。

所以,我幾乎完成了這個表格 - 然而,我在測試表單時遇到了一個問題。當我去請從下拉菜單中選擇一個系統,我得到這個錯誤信息:

無法附加文件「C:\用戶\ TEST \文檔\ Visual Studio的2013 \網站已\ NPPollDataEntry \ App_Data文件\ aspnet-NPPollDataEntry-14ef47ad-43d0-4a7d-b1c9-de351dbca3d5.mdf'作爲數據庫'aspnet-NPPollDataEntry-14ef47ad-43d0-4a7d-b1c9-de351dbca3d5'。

我在做什麼錯?

窗體頁:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ResultsEntryForm.aspx.cs" Inherits="ResultsEntryForm" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="ResultsDataEntryForm" runat="server"> 
    <div> 
     <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
      AutoGenerateColumns="False" DataSourceID="PollResultsDataSource" 
      AllowSorting="True"> 
      <Columns> 
       <asp:BoundField DataField="Issue_Date" HeaderText="Issue_Date" 
        SortExpression="Issue_Date" /> 
       <asp:BoundField DataField="Platform_Type" HeaderText="Platform_Type" 
        SortExpression="Platform_Type" /> 
       <asp:BoundField DataField="Element_Title" HeaderText="Element_Title" 
        SortExpression="Element_Title" /> 
       <asp:BoundField DataField="Poll_Score" HeaderText="Poll_Score" 
        SortExpression="Poll_Score" /> 
      </Columns> 
     </asp:GridView> 
     <asp:FormView ID="ResultsFormView" runat="server" AllowPaging="True" 
      DataSourceID="PollResultsDataSource"> 
      <InsertItemTemplate> 
       Issue_Date: 
       <asp:DropDownList ID="IssueDateDropDownList" runat="server" AutoPostBack="True" 
        DataSourceID="IssueDateDropDownDataSource" DataTextField="Issue_Date" 
        DataValueField="Issue_ID"> 
       </asp:DropDownList> 
       <br /> 
       Platform_Type: 
       <asp:DropDownList ID="PlatformDropDownList" runat="server" 
        DataSourceID="PlatformDropDownDataSource" DataTextField="Platform_Type" 
        DataValueField="Platform_ID" AutoPostBack="True" 
        OnSelectedIndexChanged="PlatformDropDownList_SelectedIndexChanged"> 
       </asp:DropDownList> 
       <br /> 
       Element_Title: 
       <asp:DropDownList ID="TitleDropDownList" runat="server" AutoPostBack="True"> 
       </asp:DropDownList> 
       <br /> 
       Poll_Score: 
       <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
       <br /> 
       <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" 
        CommandName="Insert" Text="Insert" ValidationGroup="Insert" /> 
       &nbsp;<asp:LinkButton ID="InsertCancelButton" runat="server" 
        CausesValidation="False" CommandName="Cancel" Text="Cancel" /> 
      </InsertItemTemplate> 
      <ItemTemplate> 
       Issue_Date: 
       <asp:Label ID="Issue_DateLabel" runat="server" 
        Text='<%# Bind("Issue_Date") %>' /> 
       <br /> 
       Platform_Type: 
       <asp:Label ID="Platform_TypeLabel" runat="server" 
        Text='<%# Bind("Platform_Type") %>' /> 
       <br /> 
       Element_Title: 
       <asp:Label ID="Element_TitleLabel" runat="server" 
        Text='<%# Bind("Element_Title") %>' /> 
       <br /> 
       Poll_Score: 
       <asp:Label ID="Poll_ScoreLabel" runat="server" 
        Text='<%# Bind("Poll_Score") %>' /> 
       <br /> 
       <asp:LinkButton ID="EditButton" runat="server" CausesValidation="False" 
        CommandName="Edit" Text="Edit" /> 
       &nbsp;<asp:LinkButton ID="NewButton" runat="server" CausesValidation="False" 
        CommandName="New" Text="New" /> 
      </ItemTemplate> 
     </asp:FormView> 
    </div> 
    <asp:SqlDataSource ID="PollResultsDataSource" runat="server" 
     ConnectionString="<%$ ConnectionStrings:NintendoPowerPollConnectionString %>" 
     InsertCommand="INSERT INTO Poll_Results(Issue_ID, Element_Group_ID, Poll_Score) VALUES (@Issue_ID, @Element_Group_ID, @Poll_Score)" 
     SelectCommand="SELECT NintendoPowerIssue.Issue_Date, na_lkpPlatformTypes.Platform_Type, na_Games.Element_Title, Poll_Results.Poll_Score 
      FROM Poll_Results INNER JOIN NintendoPowerIssue ON Poll_Results.Issue_ID = NintendoPowerIssue.Issue_ID 
      INNER JOIN na_Games ON Poll_Results.Element_Group_ID = na_Games.Element_Group_ID 
      INNER JOIN na_lkpPlatformTypes ON na_Games.Platform_ID = na_lkpPlatformTypes.Platform_ID" 
     UpdateCommand="UPDATE Poll_Results SET Poll_Score = @Poll_Score 
      FROM Poll_Results 
      INNER JOIN na_Games ON Poll_Results.Element_Group_ID = na_Games.Element_Group_ID 
      INNER JOIN NintendoPowerIssue ON Poll_Results.Issue_ID = NintendoPowerIssue.Issue_ID 
      WHERE (Poll_Results.Issue_ID = @Issue_ID) AND (Poll_Results.Element_Group_ID = @Element_Group_ID)"> 
     <InsertParameters> 
      <asp:Parameter Name="Issue_ID" /> 
      <asp:Parameter Name="Element_Group_ID" /> 
      <asp:Parameter Name="Poll_Score" /> 
     </InsertParameters> 
     <UpdateParameters> 
      <asp:Parameter Name="Poll_Score" /> 
      <asp:Parameter Name="Issue_ID" /> 
      <asp:Parameter Name="Element_Group_ID" /> 
     </UpdateParameters> 
    </asp:SqlDataSource> 
    <asp:SqlDataSource ID="IssueDateDropDownDataSource" runat="server" 
     ConnectionString="<%$ ConnectionStrings:NintendoPowerPollConnectionString %>" 
     SelectCommand="SELECT [Issue_ID], [Issue_Date] FROM [NintendoPowerIssue]"> 
    </asp:SqlDataSource> 
    <asp:SqlDataSource ID="PlatformDropDownDataSource" runat="server" 
     ConnectionString="<%$ ConnectionStrings:NintendoPowerPollConnectionString %>" 
     SelectCommand="SELECT [Platform_ID], [Platform_Type] FROM [na_lkpPlatformTypes]" /> 
    </form> 
</body> 
</html> 

返回代碼:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data; 
using System.Data.SqlClient; 
using System.Configuration; 

public partial class ResultsEntryForm : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    private DataTable BindDropDownList(string field) 
    { 
     DataTable dt = new DataTable(); 
     SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString()); 
     try 
     { 
      connection.Open(); 
      string sqlStatement = "SELECT [Element_Group_ID], [Element_Title] FROM [na_Games] WHERE ([Platform_ID] = @Platform_ID)"; 
      SqlCommand sqlCmd = new SqlCommand(sqlStatement, connection); 
      SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd); 
      sqlCmd.Parameters.AddWithValue("@Platform_ID", field); 
      sqlDa.Fill(dt); 
     } 
     catch (System.Data.SqlClient.SqlException ex) 
     { 
      Server.ClearError(); 
      Response.Write(ex.Message + ("<br />") + ex.Source); 
     } 
     finally 
     { 
      connection.Close(); 
     } 

     return dt; 
    } 
    protected void PlatformDropDownList_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     DropDownList ddl1 = (DropDownList)sender; 
     FormView fv = (FormView)ddl1.NamingContainer; 
     if (fv != null) 
     { 
      DropDownList ddl2 = (DropDownList)fv.FindControl("TitleDropDownList"); 
      { 
       DataTable dt = BindDropDownList(ddl1.SelectedItem.Value); 
       ddl2.DataTextField = "Field1"; 
       ddl2.DataValueField = "Field2"; 
       ddl2.DataBind(); 
      } 
     } 
    } 
} 

在此先感謝您的幫助。

+0

也許這是一個安全問題?網站運行的環境是什麼?確保應用程序池用戶可以完全訪問數據庫文件 – Spock 2015-02-12 04:24:30

+0

另外。試着給數據庫一個更友好的名字? – Spock 2015-02-12 04:26:02

回答

0
  • 打開Developer Command Propmpt for VisualStudio
  • 運行命令:
    • sqllocaldb.exe stop v11.0
    • sqllocaldb.exe delete v11.0

here

相關問題