我开发.NET应用程序(C#),我需要读取和更新Paradox 7.x数据库中的一些数据。
对于Paradox 7-8的Microsoft article,没有为OLEDB提供支持。
根据another SO question阅读是可能的,但不是写作。
那么有什么方法(可能是某些第三方库或某些BDE包装器)如何读取和写入Paradox 7.x数据库?
更新我尝试过OleDB方法:
var builder = new OleDbConnectionStringBuilder();
builder.DataSource = "D:\\MyBase\\";
builder.Provider = "Microsoft.Jet.OLEDB.4.0";
var connection = new OleDbConnection(builder.ToString() + ";Extended Properties=Paradox 5.x");
var command = new OleDbCommand("SELECT * FROM Planes", connection);
connection.Open();
using (var reader = command.ExecuteReader())
if (reader.HasRows)
while (reader.Read())
listBox1.Items.Add(reader.GetString(2));
这个失败了OleDbException(可以预料,因为我的数据库有Paradox 7.x格式):
外部表格不是预期的格式
如果我将connecton字符串更改为Extended Properties=Paradox 7.x
-
那个人失败了,并且没有使用OleDbException(可以预料,因为根据微软的文章,OLEDB不支持Paradox 7))
无效操作
我尝试过ODBC方法:
var connectionString = "Driver={Microsoft Paradox Driver (*.db )};"
+ "DriverID=538;Fil=Paradox 7.X;"
+ "DefaultDir=D:\\MyBase\\;"
+ "Dbq=D:\\MyBase\\;"
+ "CollatingSequence=ASCII;";
var connection = new OdbcConnection(connectionString);
var command = new OdbcCommand("SELECT * FROM Planes", connection);
connection.Open();
using (var reader = command.ExecuteReader())
if (reader.HasRows)
while (reader.Read())
listBox1.Items.Add(reader.GetString(2));
那个也因OdbcException
而失败错误[HY000] [微软] [Paradox ODBC驱动程序]外部表格未达到预期格式
所以没有任何工作,现在......
答案 0 :(得分:1)
最后我通过 Microsoft.Jet.OLEDB.4.0 管理了阅读和甚至编写 Paradox 7.x数据库(尽管Microsoft tells我们认为Paradox 7不支持-8):
以下代码就像魅力一样
var builder = new OleDbConnectionStringBuilder();
builder.Add("Provider", "Microsoft.Jet.OLEDB.4.0");
builder.Add("Data Source", @"D:\MyBase\");
builder.Add("Persist Security Info", "False");
builder.Add("Extended properties", "Paradox 7.x; HDR=YES");
var connection = new OleDbConnection(builder.Tostring());
var command = new OleDbCommand("SELECT * FROM Planes", connection);
//reading
connection.Open();
using (var reader = command.ExecuteReader())
if (reader.HasRows)
while (reader.Read())
listBox1.Items.Add(reader.GetString(2));
//writing
command = new OleDbCommand("DELETE * FROM Planes", connection);
command.ExecuteNonQuery();
connection.Close();
希望这些信息可以帮助像我这样的人。