8

我正在尝试从 Microsoft Access 数据库文件中提取数据,以填充多个文本框。(文本框都是在 XAML 中完成的。)我很确定我遗漏了一些东西,因为没有访问数据库文件。

这是我的代码:

    DataTable tblVFWPostManagers = new DataTable();
    string connString2 = ConfigurationManager.ConnectionStrings**/*["\\Documents\DatabaseFile.accdb"]*/**.ConnectionString;
    string query2 = @"SELECT Manager ID, Manager FName, Manager LName, Manager Address, Manager City, Manager State, Manager Zip Code,
            Manager Home Phone Number, Manager Cell Phone Number, Manager Email FROM tblVFWPostManagers";

        //Fill the VFWPostManagers Set with the data
        using (SqlConnection conn2 = new SqlConnection(connString2))
        {
            SqlDataAdapter da2 = new SqlDataAdapter(query2, conn2);
            da2.Fill(tblVFWPostManagers);
        }

注意:我确定粗体是不正确的。但是,我不确定这些括号中的内容。起初,我认为这是文件路径所在的位置。当我评论该部分时,错误消失了。

如何使用上述方法从我的数据库中提取数据?我错过了什么?

4

2 回答 2

13

您的代码中有几个错误:

ConfigurationManager.ConnectionStrings引用您的应用程序配置的特定部分,其中存储了用于访问您的数据库(一个或多个)的信息。该部分包含这样的行

  <connectionStrings>
            <add name="MyDataBase" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;
                                   Data Source=C:\myFolder\myAccess2007file.accdb;
                                   Persist Security Info=False"/>
  </connectionStrings>

(要为您的应用程序创建有效的连接字符串,请查看www.connectionstrings.com
因此您的代码使用“名称”键引用这些部分声音

string connString2 = ConfigurationManager.ConnectionStrings["MyDataBase"].ConnectionString;

说现在您的查询文本将失败,因为您广泛使用带有空格的列名。在这种情况下,每个列名都应该用方括号括起来。

string query2 = @"SELECT [Manager ID], [Manager FName], [Manager LName], .....
于 2013-08-13T20:05:33.870 回答
3

在您的 app.config 或 web.config 文件中,您有一个 ConnectionStrings 部分:

<configuration>
    <connectionStrings>
        <add name="MyConnection" connectionString="..."/>
    </connectionStrings>
    ...
</configuration>

您可以在代码中访问它:

string connString2 = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;
于 2013-08-13T20:03:34.690 回答