如何在Visual Studio中使用Razor网页设置数据库并连接到数据库?

史蒂芬·乌洛姆

我一直在寻找,但无法提出有效的解决方案。

作为C#的中介,以及HTML和其他东西的得体,我以为我会愚弄Razor Web Pages并创建一个简单的网站。我希望创建一个数据库,其中包含每个页面的所有标题和描述的列表。然后,我可以轻松地更改所有实例和对每个html文件的引用以保持DRY。但是,除了从SQL表中获取异常外,我似乎什么也没得到。

我尝试使用Visual Studio 2015进行以下操作

  1. 用一个简单的表创建Database.mdf
  2. 使用服务器资源管理器连接到数据库
  3. 将connectionStrings添加到Web.config

    <connectionStrings>
        <add name="Database" connectionString="Data Source=|DataDirectory|\Database.mdf" providerName="System.Data.SqlClient" />
    </connectionStrings>
    
  4. 确保所有WebMatrix dll软件包均已与NuGet一起安装。
  5. 创建default.cshtml

    @using WebMatrix.Data
    @using System.Data.SqlClient
    <Html><body> etc...
    @{
        var db = Database.Open("Database");
        try
            {
                db.Query("SELECT * FROM Table");
            }
            catch (SqlException odbcEx)
            {
                System.Diagnostics.Debug.WriteLine("It is an Exception: " + odbcEx);
            }
      }
    </body><Html>
    
  6. 在Microsoft Edge中运行

大约10秒钟后,该网站将显示在localhost上。但是表中有结果,输出中只有一个例外:

It is an Exception: System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
   at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling)
   at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
   at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
   at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
   at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
   at System.Data.SqlClient.SqlConnection.Open()
   at WebMatrix.Data.Database.EnsureConnectionOpen()
   at WebMatrix.Data.Database.<QueryInternal>d__0.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at WebMatrix.Data.Database.Query(String commandText, Object[] parameters)
   at ASP._Page_Default_cshtml.Execute() in c:\Users\Person\OneDrive\Documents\Website\Default.cshtml:line 29

我在网上搜索后发现,由于WebMatrix已过时,因此针对Visual Studio的解决方案并不多。据我所知,Razor目前似乎并未得到广泛使用。

我尝试将connectionStrings更改为一些不同的东西,但是没有运气。我怎样才能使它正常工作?

山姆

解决方法:

我相信问题出在您的连接字符串上。连接字符串需要指定一个SQL Server。在这种情况下,您刚刚指定了文件路径。您需要一个数据库服务器才能实际提供该mdf文件。

这个SO问题应该向您展示如何从现有的服务器资源管理器连接中获取连接字符串:

然后,您可以在已连接服务器的属性中看到连接字符串(选择连接,然后按F4或Alt + Enter或在右键菜单上选择“属性”)。

解释:

这是为什么您当前的连接字符串可能无法按预期方式工作的说明:

当您通过服务器资源管理器“连接”到mdf文件时,很可能是使用LocalDb。LocalDb是Visual Studio附带的按需服务,使您可以轻松地开发应用程序(就像您尝试做的那样),而无需运行Sql Server的完整实例。

不幸的是,目前我还没有一个带有附加的mdf文件的正在运行的示例,但是我相信类似的事情将为您完成工作,我从MSDN的有关连接字符串的文章中获取了此字符串。

<add name="ConnectionStringName"
    providerName="System.Data.SqlClient"
    connectionString="Data Source=(LocalDB)\v11.0;AttachDbFileName=|DataDirectory|\DatabaseFileName.mdf;InitialCatalog=DatabaseName;Integrated Security=True;MultipleActiveResultSets=True" />

这里有几个重要的方面:

  1. Data Source=(LocalDB)\v11.0-这指定了要使用的按需启动localdb实例。请注意,v11.0此字符串中的版本因安装而异,因此您应该为字符串找到正确的版本。(您应该可以在下面找到它更容易)
  2. AttachDbFilename=|DataDirectory|\DatabaseFilename.mdf-这告诉LocalDb加载该数据库文件。或者,localdb将数据库文件保留在用户主目录或AppData目录中的某个位置。
  3. Integrated Security=true-连接字符串需要身份验证方案。集成安全性是两个可能的选项,它使用Windows凭据来尝试访问数据库,这在许多方面都可以很好地工作,LocalDb就是其中之一。另一个选择是使用sql身份验证以及sql名称和密码进行连接。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Microsoft Visual Studio中使用Python连接到数据库

来自分类Dev

Visual Studio网页代码中的错误(尝试将网站连接到数据库)

来自分类Dev

如何在Visual Studio中连接Oracle数据库

来自分类Dev

如何使用WebMatrix中的Razor连接到SQL Server数据库并检索数据?

来自分类Dev

如何在Codeigniter中使用已连接数据库的数据库连接?

来自分类Dev

如何在Visual Studio中使用EZ-Connect连接到Oracle数据库(11g)(使用SID而不是服务名称)

来自分类Dev

在Visual Studio中使用VB.NET连接到本地SQL数据库的连接字符串问题

来自分类Dev

从Visual Studio COBOL连接到MySQL数据库

来自分类Dev

如何在PHP中使用MVC连接到数据库

来自分类Dev

连接到外部数据库时,如何在Spotfire中使用OVER语句?

来自分类Dev

如何在 Android 中使用 OkHttp3 连接到 phpmyadmin 数据库

来自分类Dev

如何使用Java连接到数据库连接

来自分类Dev

如何使用Java连接到数据库连接

来自分类Dev

我如何连接到数据库

来自分类Dev

如何从Unity连接到数据库

来自分类Dev

如何连接到远程数据库

来自分类Dev

如何连接到数据库

来自分类Dev

如何将UCanAccess连接到使用数据库密码加密的Access数据库?

来自分类Dev

如何使用和尚连接到多个MongoDB数据库?

来自分类Dev

如何使用mongo / mongoose连接到远程数据库

来自分类Dev

python:如何使用jdbc连接到oracle数据库

来自分类Dev

如何使用Erlang,Yaws连接到mysql数据库

来自分类Dev

如何使用Laravel Homestead连接到PostgreSQL数据库?

来自分类Dev

如何使用和尚连接到多个MongoDB数据库?

来自分类Dev

如何使用Flask连接到pythonanywhere中的数据库

来自分类Dev

如何使用PHP MySQL连接到新数据库

来自分类Dev

如何使用远程连接到 HEROKU PostgreSQL 数据库

来自分类Dev

如何使用 UWP 连接到 mySQL 数据库

来自分类Dev

如何使用函数和 sqlalchemy 连接到数据库

Related 相关文章

  1. 1

    在Microsoft Visual Studio中使用Python连接到数据库

  2. 2

    Visual Studio网页代码中的错误(尝试将网站连接到数据库)

  3. 3

    如何在Visual Studio中连接Oracle数据库

  4. 4

    如何使用WebMatrix中的Razor连接到SQL Server数据库并检索数据?

  5. 5

    如何在Codeigniter中使用已连接数据库的数据库连接?

  6. 6

    如何在Visual Studio中使用EZ-Connect连接到Oracle数据库(11g)(使用SID而不是服务名称)

  7. 7

    在Visual Studio中使用VB.NET连接到本地SQL数据库的连接字符串问题

  8. 8

    从Visual Studio COBOL连接到MySQL数据库

  9. 9

    如何在PHP中使用MVC连接到数据库

  10. 10

    连接到外部数据库时,如何在Spotfire中使用OVER语句?

  11. 11

    如何在 Android 中使用 OkHttp3 连接到 phpmyadmin 数据库

  12. 12

    如何使用Java连接到数据库连接

  13. 13

    如何使用Java连接到数据库连接

  14. 14

    我如何连接到数据库

  15. 15

    如何从Unity连接到数据库

  16. 16

    如何连接到远程数据库

  17. 17

    如何连接到数据库

  18. 18

    如何将UCanAccess连接到使用数据库密码加密的Access数据库?

  19. 19

    如何使用和尚连接到多个MongoDB数据库?

  20. 20

    如何使用mongo / mongoose连接到远程数据库

  21. 21

    python:如何使用jdbc连接到oracle数据库

  22. 22

    如何使用Erlang,Yaws连接到mysql数据库

  23. 23

    如何使用Laravel Homestead连接到PostgreSQL数据库?

  24. 24

    如何使用和尚连接到多个MongoDB数据库?

  25. 25

    如何使用Flask连接到pythonanywhere中的数据库

  26. 26

    如何使用PHP MySQL连接到新数据库

  27. 27

    如何使用远程连接到 HEROKU PostgreSQL 数据库

  28. 28

    如何使用 UWP 连接到 mySQL 数据库

  29. 29

    如何使用函数和 sqlalchemy 连接到数据库

热门标签

归档