2014-02-09 30 views
0

我正在做一個學習項目,我想將Html + Razor與它連接到數據庫。將html頁面+剃刀連接到數據庫

步驟I跟着

  1. 創建一個樣表(這是我打算使用以執行 「插入」 和 「更新」 查詢)

  2. 創建的數據庫(名稱:TestDatabase.mdf,位於內側的App_Data)

  3. 把一些樣本值在數據庫中的表名「學生」 Student Table

  4. 更新webconfig文件如下

    (的ConnectionString被COPYIN獲得摹從數據庫資源管理器)

    <connectionStrings> 
        <add name="TestDatabase" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\TestDatabase.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlServerCe.4.0" /> 
    </connectionStrings> 
    
  5. 插入剃刀代碼連接如下

    @{ 
        var db = Database.Open("TestDatabase"); 
        var query = "Select * Student"; 
    } 
    
    <html> 
        <head> 
         <title>Testing For Database Connectivity</title> 
        </head> 
        <body> 
         <div> 
          <fieldset> 
           <legend>Some Sample Form</legend> 
           <form> 
            <div> 
             <label for="FirstName">FirstName</label> 
             <input type="text" name="FirstName" /> 
            </div> 
            <div> 
             <label for="LastName">LastName</label> 
             <input type="text" name="LastName" /> 
            </div> 
            <div> 
             <label for="SSN">SSN</label> 
             <input type="text" name="SSN" /> 
            </div> 
            <div> 
             <input type="submit" value="submit" /> 
            </div> 
            <div> 
             @foreach (var row in db.Query(query)) 
             {      
              @row.FirstName 
              <br /> 
             } 
            </div> 
           </form> 
          </fieldset> 
         </div> 
        </body> 
    </html> 
    

但我收到以下錯誤

堆棧跟蹤

[ArgumentException: Keyword not supported: 'attachdbfilename'.] 
System.Data.SqlServerCe.SqlCeConnectionStringBuilder.GetIndex(String keyword) +192 
System.Data.SqlServerCe.SqlCeConnectionStringBuilder.set_Item(String keyword, Object   value) +31 
System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(String value) +185 
System.Data.SqlServerCe.SqlCeConnectionStringBuilder..ctor(String connectionString) +177 
System.Data.SqlServerCe.SqlCeConnection.set_ConnectionString(String value) +239 
WebMatrix.Data.DbProviderFactoryWrapper.CreateConnection(String connectionString) +96 
WebMatrix.Data.<>c__DisplayClass15.<OpenConnectionStringInternal>b__14() +16 
WebMatrix.Data.Database.get_Connection() +19 
WebMatrix.Data.Database.EnsureConnectionOpen() +12 
WebMatrix.Data.<QueryInternal>d__0.MoveNext() +71 
System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +327 
System.Linq.Enumerable.ToList(IEnumerable`1 source) +58 
WebMatrix.Data.Database.Query(String commandText, Object[] parameters) +103 
ASP._Page_TestPage_cshtml.Execute() in d:\ASP.NET\RefreshTesting\TestPage.cshtml:33 
System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +209 
System.Web.WebPages.WebPage.ExecutePageHierarchy(IEnumerable`1 executors) +68 
System.Web.WebPages.WebPage.ExecutePageHierarchy() +152 
System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +78 
System.Web.WebPages.WebPageHttpHandler.ProcessRequestInternal(HttpContextBase httpContext) +121 

錯誤頁面圖像

Error displayed

我想非常清楚,言之有物,但如果我錯過了提東西,那麼請讓我知道。
我現在不知道我哪裏出錯或者我犯了一個愚蠢的錯誤,現在我甚至懷疑這是否可能。我是微軟語言的新手,我觀看了一些使用MVC的Youtube視頻來實現它。是否有可能按照我所做的方式做到這一點?如果是,請幫助我,如果沒有,那麼我可能的選擇是什麼?

回答

0

您確定您正確創建了SQL Server CE數據庫嗎?

我相信應該是.sdf文件,而不是.mdf文件。

如果將連接字符串的providerName部分從"System.Data.SqlServerCe.4.0"更改爲"System.Data.SqlClient",會發生什麼情況?

+0

okay我嘗試了你建議的方法,但仍然不成功
步驟如何我最初創建數據庫
1.右鍵單擊App_Data - >添加新項 - > Sql Server數據庫
2.打開它的屬性和複製連接字符串

我做了以下修改和嘗試,但它仍然給錯誤

我甚至創造了**。**自衛隊數據庫和更新連接字符串,但它仍然給錯誤 –

+0

你得到什麼錯誤,當你改變了提供者名稱web.config? –

0

當你創建的SQL Server數據庫,那麼你應該設置的providerNameSystem.Data.SqlClient的

而我沒有看到你的Initial Catalog設置,我的意思是你必須設置你要連接到哪個數據庫。

你可以嘗試添加這樣的連接字符串嗎?

<connectionStrings> 
    <add name="TestDatabase" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=DBName;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\TestDatabase.mdf" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

其中DBName是要連接的數據庫名稱。