我正在尝试连接到我为使用OLE DB测试目的而下载的Visual FoxPro数据库,这是我的代码:
private void ReadMyData() {
String dbProvider = "Provider=.NET Framework Data Provider for OLE DB;";
String dbSource = "Data Source=VFPOLEDB.C:\\USERS\\X\\DESKTOP\\LOG;";
String connectionString = dbProvider + dbSource;
OleDbConnection FPDBConn = new OleDbConnection(connectionString);
OleDbCommand FPDBCmd;
string sql = null;
sql = "Select * from clogbook";
try {
FPDBConn.Open();
FPDBCmd = new OleDbCommand(sql, FPDBConn);
OleDbDataReader FPDBReader = FPDBCmd.ExecuteReader();
while (FPDBReader.Read()) {
Debug.Write(FPDBReader.GetInt32(0) + ", " + FPDBReader.GetString(1));
}
FPDBReader.Close();
FPDBCmd.Dispose();
FPDBConn.Close();
} catch (Exception ex)
{
Debug.Write("Can not open connection ! " + ex);
}
}
问题是我收到了“System.InvalidOperationException:'OLE DB'的.NET Framework数据提供程序'提供程序未在本地计算机上注册。”
我正在谷歌上搜索它并遇到这个msdn page,它说“InvalidOperationException”异常的条件是“连接已经打开”。在这种情况下我认为不会发生这种情况。
我怎样才能让它发挥作用?
PS:接受不同的建议来建立这种联系。
答案 0 :(得分:2)
要连接到VFP,我强烈建议您下载Visual Foxpro OleDb Provider。
然后,连接字符串将被格式化为......
string connectionString = @"Provider=VFPOLEDB.1;Data Source=C:\YourDirectory\";
连接应该指向表所在的PATH,就像你现在拥有的那样...人们多次尝试连接到特定的TABLE,但是一旦建立了路径,就可以从任何表中查询文件夹(或子文件夹,如果有的话)。
应该让你更进一步......
答案 1 :(得分:0)
您应该下载并使用VFPOLEDB作为DRapp建议。以下是使用示例数据库Northwind数据的示例:
private void ReadMyData()
{
var builder = new OleDbConnectionStringBuilder();
builder.Provider = "VFPOLEDB";
builder.DataSource = @"C:\Program Files (x86)\Microsoft Visual FoxPro 9\Samples\Northwind";
string sql = "Select * from Customers where Country like ?";
using (OleDbConnection con = new OleDbConnection(builder.ConnectionString))
using (OleDbCommand cmd = new OleDbCommand(sql, con))
{
cmd.Parameters.AddWithValue("@country", "USA");
try
{
con.Open();
var reader = cmd.ExecuteReader();
while (reader.Read())
{
Debug.WriteLine("{0}, {1}",
reader["CustomerId"],
reader["CompanyName"]);
}
con.Close();
}
catch (Exception ex)
{
Debug.Write("Can not open connection ! " + ex);
}
}
}
请注意,参数未命名,而是位置。
PS:还要检查Tom Brothers' Linq To VFP,VFP Entity Framework和VFP Client for ADO.Net。