【问题标题】:C# Winform ApplicationC# Winform 应用程序
【发布时间】:2014-04-25 17:34:29
【问题描述】:

我正在创建一个连接到 ms-access 数据库的 winform 应用程序。问题出在我的连接字符串上,因为我可以在本地访问数据库,但是如果我从我的 USB 记忆棒或任何其他电脑上运行它会给我错误。如何修改我的连接字符串,以便我可以在其他电脑上运行我的应用程序而不会遇到任何问题。

string strConnect = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Aakash\Documents\Visual Studio 2013\Projects\Industrial Foundry\record.accdb";
using (OleDbConnection con = new OleDbConnection(strConnect))
{
    con.Open();
    using (OleDbCommand cmd = new OleDbCommand("select * from Industry ", con))
    {
        OleDbDataAdapter da = new OleDbDataAdapter(cmd);

        da.Fill(dt);
        dataGridView1.DataSource = dt;

    }
}

【问题讨论】:

  • 您的连接字符串包含指向 C: 驱动器上数据库的硬编码路径。您想如何定位访问文件?
  • 这和 WinForms 有什么关系?请修改您的标签,并替换您的问题标题。目前,您的问题标题包括语言(不相关,在标签中给出)、UI 工具包(据我所知与问题完全无关)和一个非常笼统的词(application)这并没有说明您面临的问题。
  • 2 个即时问题; 1.你的数据库连接字符串包含一个文件系统路径;此路径必须存在于您使用该应用程序的每台机器上。 2. 如果您使用 Access 并且目标机器没有安装 access,您需要安装运行时可分发来自:microsoft.com/en-us/download/details.aspx?id=13255
  • 我将编译该项目并将文件的发布版本提供给我的客户以在他的 PC 上运行。
  • @dash 目标机器已安装访问权限,但这里的问题是数据源,因为我不知道如何将它从 pc 更改为 pc。

标签: c# database-connection


【解决方案1】:

也许这是一个好的开始:

http://msdn.microsoft.com/en-us/library/ms254494(v=vs.110).aspx

由于您的标题表明您有一个 WinForms 应用程序,您可能还需要考虑添加一个“浏览”按钮来定位数据库,然后使用 connection string builder 来建立您的连接。

【讨论】:

  • 除了创建浏览按钮并在每次用户打开表单时手动查找数据库之外,还有其他选择吗?当他打开表单时,我想制作一个简单的应用程序,单击按钮记录从数据库中显示。但问题是数据源,因为它是为我的电脑路径固定的。
  • 我不确定您是否在询问是否有某种方法可以“猜测”数据源路径 - 显然您至少需要询问一次。但是很容易坚持到user settings file的路径。
【解决方案2】:

希望对你有帮助。

创建一个winform,您可以在其中输入“服务器”、“密码”等参数 之后,使用参数更新您的连接字符串:

Friend Principal As New SqlClient.SqlConnection("data source=" & My.Settings.Server & ";INITIAL CATALOG=" & My.Settings.DB & ";UID=" & My.Settings.User & ";PWD=" & My.Settings.Password & ";workstation id=" & My.Settings.PC & ";packet size=4096")

【讨论】:

    【解决方案3】:

    您的连接字符串直接指向 C: 驱动器上的路径。

    有很多方法可以解决它;您可以只提示用户输入文件位置,和/或将其存储在用户可配置的设置文件中。

    【讨论】:

    • 如何将路径存储在用户可配置的 ini 文件中???您能否提供一些代码来帮助我开始。
    • 我建议使用System.XMLcodeproject.com/Articles/7718/…
    【解决方案4】:

    我认为对您来说简单的方法是使用 App.Config 文件(应用程序配置文件),您可以在配置文件中添加数据库键,当应用程序启动时,您可以检查键值是否为空,而不是强制用户选择数据库路径,您可以将该数据库路径设置为配置文件。您可以使用..读取您的键值。

    读取密钥代码

    System.Configuration.ConfigurationSettings.AppSettings["DBKey"];
    

    写密钥代码

    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    AppSettingsSection app = config.AppSettings;
    app.Settings.Add("DBKey", "DBPath");
    config.Save(ConfigurationSaveMode.Modified)
    

    谢谢 苏雷什

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多