【问题标题】:Connect to a SQL Server database without a set file path连接到没有设置文件路径的 SQL Server 数据库
【发布时间】:2020-06-15 01:47:39
【问题描述】:

我正在尝试使用 C# 连接到本地 SQL Server 数据库。

我目前正在使用以下连接字符串:

connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\User\source\repos\majorWork\majorWork\gameStats.mdf;Integrated Security=True";

但是,我不想使用硬编码的文件路径,因为我希望能够在多台计算机上使用该应用程序,其中文件路径会有所不同。我该怎么做呢?

【问题讨论】:

  • 您应该将文件存储到特定文件夹中,您可以使用相对于应用程序路径的路径来定位该文件夹。例如,您创建一个文件夹 Database 运行应用程序。然后你可以使用相对路径为AttachedDbFileName = .\Database\gameStats.mdf
  • 呃,您可以在使用它来创建连接之前修改连接字符串。在其中“硬编码”一个占位符并将占位符替换为程序运行的机器的数据库的实际位置上
  • 你真的应该把数据库放在 服务器 - SQL Server 是为它构建的 - 然后通过服务器名称引用该服务器并让 SQL Server 处理所有文件 -相关细节。
  • 当数据库附加到 SQL Server 时,切勿使用 AttachedDbFileName。它不是必需的。只需删除不需要的 AttachedDbFileName 即可。只需将“数据源”与您在 SQL Server Management Studio 的登录窗口中看到的服务器名称和实例一起使用。数据库拥有 mdf 文件,您无权读取该文件,尤其是当 mdf 在远程计算机上时。

标签: c# sql-server visual-studio


【解决方案1】:

最好的方法是在 Web.Config 文件中设置这个连接。

<Database>
  <ConnectionString name="connection">Server=servername; Initial Catalog=dbname; Persist Security Info=False; User ID=username; Password=password; MultipleActiveResultSets=False; Encrypt=True; TrustServerCertificate=False; Connection Timeout=30;;</ConnectionString>
</Database>    

然后添加 Add System.Configuration 作为参考。

在 C# 中你可以调用它

string constring = ConfigurationManager.ConnectionStrings["connection"].ConnectionString;

之后,您可以通过将其传递给来创建新的连接实例

SqlConnection con = new SqlConnection(constring)

【讨论】:

    【解决方案2】:

    如果您使用默认实例安装 SQL Server Express,那么您可以使用 .作为您的服务器名称,任何人都可以将其与默认实例一起使用。 1.然后在visual studio中,点击解决方案资源管理器 2.连接数据库,按照SQL server的说明 3.当它到达服务器名称时使用。连接并选择您已经在 ms SQl 中创建的数据库名称,然后测试您的连接 4.成功后,您现在可以单击解决方案资源管理器下显示的数据库名称, 5.点击数据库名称后,在按钮右上角,会有一个连接字符串,复制并使用 这将公开或全球宣布

    Sqlconnection con = new sqlconnection("paste the connection string");
    

    并使用

    Sqlcommand cmd = new sqlcommand("insert into......",con);
    Con.open ();
    Cmd.executenonquery();
    Con.close();
    

    【讨论】:

    • 这是一个糟糕的解决方案。不要试。为什么要卸载 SQL Server。这完全没有意义。
    • 没有人建议他安装,我如何使用它,它甚至适用于本地主机
    • 他已经安装好了。你建议他卸载。 OP 不想使用 LocalDb 。请参阅我在发布中的评论。
    • 我只是说如果他使用默认实例安装了服务器,而不是他应该卸载并重新安装,好的听到你的声音,如果你认为这是我的意思,那就这样吧跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多