2

我正在尝试在 .Net 3.5 应用程序中读取 Paradox 7.x .db 文件,但我没有成功。

首先,当我以用户或系统dsn身份注册odbc时,Microsoft Paradox ODBC Driver仅显示最高5.x的版本,因此看起来它不支持Paradox 7.x版本。

connectionsstrings.com,我找到了应该适用于Paradox 7.x 的连接字符串:

Provider=MSDASQL;Persist Security Info=False;Mode=Read;
Extended Properties='DSN=Paradox;DBQ=C:\mydbfolder;
DefaultDir=C:\mydbfolder;DriverId=538;FIL=Paradox 7.X;MaxBufferSize=2048;
PageTimeout=600;';Initial Catalog=C:\mydbfolder

但是当我尝试使用数据适配器测试连接时,出现以下异常:

“错误 [IM002] [Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序”

我已将 ODBC 指定为用户 DSN 和系统 DSN,但一直收到相同的错误。

关于我应该做什么的任何线索?

谢谢,

佩德罗

4

3 回答 3

2

http://www.progware.org/Blog/post/Connecting-to-a-PARADOX-DB-with-C-%28Vista-XP%29.aspx

ConnectionString.Append(@"Provider=Microsoft.Jet.OLEDB.4.0;");
ConnectionString.Append(@"Extended Properties=Paradox 7.x;");
ConnectionString.Append(@"Data Source=Z:\Dane;");
//ConnectionString.Append(@"Mode=ReadWrite;");
ConnectionString.Append(@"Mode=1;");
于 2012-01-09T21:21:07.947 回答
0

好奇,为什么不使用 OLEDB 提供程序,然后使用 System.Data.OleDb 名称空间中的类?

于 2009-02-17T17:22:43.693 回答
0

这是我过去编写的一段代码,它可以工作。它基于 Przemysław Staniszewski 在此线程其他地方的帖子中的死链接中的代码。

它使用 OleDbConnection 和 OleDbDataAdapter 打开一个悖论数据库文件,并将该文件的内容加载到 DataTable 变量中。

这段代码对我有用,用于匆忙的一次性工作,缺乏错误处理。它可能对你有用。

        /// <summary>
        /// ConnectToTable
        /// </summary>
        /// <param name="pFullPath">Full path to .DB file</param>
        /// <param name="pTableName">Name of table to load</param>
        public static void ConnectToTable(string pFullPath, string pTableName)
        {

            OleDbConnection _ParadoxConnection = new OleDbConnection();

            StringBuilder ConnectionString = new StringBuilder("");
            ConnectionString.Append(@"Provider=Microsoft.Jet.OLEDB.4.0;");
            ConnectionString.Append(@"Extended Properties=Paradox 7.x;");
            ConnectionString.Append(string.Format(@"Data Source={0}", pFullPath));

            _ParadoxConnection.ConnectionString = ConnectionString.ToString();

            _ParadoxConnection.Open();

            using (OleDbDataAdapter da = new OleDbDataAdapter(
                string.Format("SELECT * FROM {0};", pTableName)
                , _ParadoxConnection))
            {
                DataTable tab = new DataTable
                {
                    TableName = pTableName
                };
                da.Fill(tab);

                //tab now contains a data

                //Get the column name
                foreach(DataColumn col in tab.Columns)
                {
                    Console.WriteLine(col.ColumnName);
                }

                //do the rows
                foreach (DataRow row in tab.Rows)
                {
                    foreach(var item in row.ItemArray)
                    {
                        //write each row value
                    }
                }
            }
        }
于 2019-08-08T16:46:25.330 回答