1

我有一个使用 asp.net 3.5 和 Sql server 2008 作为后端数据存储的网站。现在我们想在我们的网站上添加一个新页面。但是我们想要在此页面中共享的数据已经由 FoxPro 软件创建并保存在我们的一个本地系统中。

我没有 FoxPro 的经验。有什么方法可以在我们的网站上使用这些数据?特别是不必在服务器中创建新数据库并重新导入或写入所有记录?在这种情况下最好的方法是什么?

顺便问一下,是否可以更改 FoxPro 数据库的扩展名?类似 Database.customExt 的东西?

4

5 回答 5

2

您可以使用ADO.NET 中的OLEDB 数据源连接到 FoxPro 数据库。是否需要将数据导入 SQL Server 或直接在 FoxPro 中访问数据取决于您。这将取决于您是否要在查询中将数据与 SQL Server 数据连接起来。

于 2012-04-17T16:17:41.770 回答
2

除了你已经得到的答案。您可能有兴趣使用LINQ to VFPVFP Entity Framwork Provider通过使用 LINQ 使数据访问更加容易。

于 2012-04-17T18:31:05.220 回答
1

您可以创建一个链接到此 Foxpro 数据库的服务器。

此外,Foxpro 表可以有任何扩展名。但是,您必须在使用表或数据库时指定扩展名。例如:

OPEN DATABASE MyFoxProDatabase.customExt
USE mytable.custonExt
于 2012-04-17T16:56:04.543 回答
1

您有几个选项可用于构建对 FoxPro 的数据访问。您可以将 ADO.NET 数据访问代码放在代码隐藏中,在它自己的 c# 库中,或使用 objectdatasource 进行 2 路绑定。

private void LoadData(string parameter)
{
    string sql = "SELECT a.myfield FROM mytable.customExt a WHERE a.whereField=?";
    using(OleDbConnection conn = new OleDbConnection(myConnectionString))
    {
        using (OleDbCommand command = new OleDbCommand(sql, conn))
        {
            command.Parameters.AddWithValue("@Parameter", parameter);

            try
            {
                conn.Open();
                using(OleDbDataReader dr = command.ExecuteReader(CommandBehavior.CloseConnection))
                {
                    myGridView.DataSource = dr;
                    myGridView.DataBind();
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }
    }
}

这是在 web.config 中使用的示例连接字符串:

<add name="myData" connectionString="Provider=VFPOLEDB.1;Data Source=C:\MyFiles\" providerName="System.Data.OleDb"/>

我相信您可以对 FoxPro 表和数据库使用自定义扩展。然后,您的所有 SQL 语句都需要显式使用该扩展。

SELECT t.MyField FROM MyTable.customExt t
于 2012-04-17T17:07:30.260 回答
1

虽然您可以更改 Visual FoxPro 表的扩展名,但这只会影响 DBF 文件。如果表有任何备注字段,则有一个关联的 FPT 文件,您无法更改其扩展名。同样,如果表有关联的索引文件,则它必须具有 CDX 扩展名。

因此,如果您要更改扩展名的原因是允许多个表具有相同的文件干,请不要。这是一个真正把事情搞砸的好方法。

于 2012-04-17T20:35:05.453 回答