c# - 尝试读取数据库 C# 错误
问题描述
我正在尝试从我的 SQL 数据库中读取,但是我收到以下错误
System.Data.SqlClient.SqlException: '尝试为文件 D:\\Work Pactise\\Keepmefit\Keepmefit\\App_Data\Keepmefit.Models.CardioDBssContext.mdf 附加自动命名数据库失败。存在同名数据库,或无法打开指定文件,或位于 UNC 共享上。
我附上了下面的代码。我在我的代码上做了一些断点,异常来自connection.Open();
我已经花了一整天的时间,并尝试了很多不同的方法,但似乎没有任何效果。任何反馈将不胜感激。
public class StrengthController : Controller
{
private const string VV = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=D:\\Work Practise\\Keepmefit\Keepmefit\\App_Data\Keepmefit.Models.CardioDBssContext.mdf;Integrated Security=True";
// GET: Rep
public ActionResult Index()
{
// SqlDataReader read = null;
SqlConnection connection = new SqlConnection(VV);
using (connection)
{
SqlCommand myCommand = new SqlCommand("SELECT * FROM Strength",
connection);
connection.Open();
SqlDataReader read = myCommand.ExecuteReader();
if (read.HasRows)
{
while (read.Read())
{
Console.WriteLine("Working" + read["Id"].ToString());
}
}
else
{
Console.WriteLine("nothing");
}
read.Close();
}
return View();
解决方案
查看连接字符串中的双反斜杠。当您定义带有前导 'at' ( @
) 字符的字符串时,如下所示:
string VV = @"C:\some\file\path";
这称为逐字字符串,反斜杠 ( \
) 字符对语言没有任何特殊含义。将它们加倍会给你一个确实有两个反斜杠的字符串,这可能会破坏你的文件路径。
在某些情况下,如果您只是将带有额外\
字符的路径发送到文件系统,您仍然可以正常工作,但对于这种情况,我怀疑额外的反斜杠正在欺骗您尝试连接到文件的连接对象共享路径(即:)\\server\share
,这是不允许的。
推荐阅读
- c++11 - cin.fail() 运行迭代太晚了?
- javascript - 如何使用一个主路由创建多个 html 页面?
- c# - 在 asp.net 中使用带有 Fluent API 的 Entity Framework 6 配置一对多关系
- java - 如何使用 java 本机 SDK 在 firebase 中创建引用
- php - 创建商店时钟功能 - 根据时间打开/关闭和事件
- node.js - express-rate-limit 阻止来自所有用户的请求
- php - 如果没有 laravel 中的 php artisan,web Routes 将无法工作
- python - Pandas 滚动窗口:基于窗口值的开发规则
- android - 我希望第二个小部件(容器)向左对齐,但它与中心对齐。如何将它与其他小部件对齐?
- visual-studio-code - 找不到 Arduino IDE VS 代码