.NET连接到dBASE .dbf文件连接到、文件、NET、dbf

2023-09-03 05:31:53 作者:嗯哼′别吵

我想读的dBase III使用.NET和WinForms并没有什么.dbf文件我已经尝试似乎工作。我尝试了四种不同的连接方式和他们每个人都挂在打开方法。没有例外,没有超时,没有事件的消息,什么都没有。该表格​​只是坐在那里。任何什么想法可能是错误的?

下面是我试过的方法。 .dbf文件是在d:\ DB \:

 私人无效READ1()
        {
            串c =供应商= Microsoft.Jet.OLEDB.4.0;数据源= D:\\ \\分贝;扩展属性=的dBASE III;
            OleDbConnection的康恩=新的OleDbConnection(C);
            conn.Open();
            的MessageBox.show(正常);
            conn.Close();

        }

        私人无效READ2()
        {
            System.Data.Odbc.OdbcConnection oConn =新System.Data.Odbc.OdbcConnection();
            oConn.ConnectionString = @驱动程序= {微软dBase驱动程序(* .DBF)}; SourceType中= DBF; SOURCEDB = D:\分贝;独家=否;分页=机床; NULL = NO;删除= NO; BACKGROUNDFETCH = NO; ;
            oConn.Open();
            System.Data.Odbc.OdbcCommand oCmd = oConn.CreateCommand();
            oCmd.CommandText = @SELECT * FROM D:\ DB \ Poi.dbf;
            数据表DT =新的DataTable();
            dt.Load(oCmd.ExecuteReader());
            的MessageBox.show(dt.Rows.Count.ToString());
            oConn.Close();
        }

        私人无效读3()
        {
            System.Data.Odbc.OdbcConnection oConn =新System.Data.Odbc.OdbcConnection();
            oConn.ConnectionString = @驱动程序= {微软的dBASE驱动程序(* .DBF)}; DriverID = 277; DBQ = D:\分贝;;
            oConn.Open();
            的MessageBox.show(正常);
            oConn.Close();
        }

        私人无效read4()
        {
            System.Data.Odbc.OdbcConnection oConn =新System.Data.Odbc.OdbcConnection();
            oConn.ConnectionString = @驱动程序= {微软dBase驱动程序(* .DBF)};数据源= D:\ DB \;
            oConn.Open();
            System.Data.Odbc.OdbcCommand oCmd = oConn.CreateCommand();
            oCmd.CommandText = @SELECT * FROM D:\ DB \ Poi.dbf;
            数据表DT =新的DataTable();
            dt.Load(oCmd.ExecuteReader());
            的MessageBox.show(dt.Rows.Count.ToString());
            oConn.Close();
        }
 

解决方案

试试这个:

 使用(OleDbConnection的CN =新的OleDbConnection(
    @供应商= Microsoft.Jet.OLEDB.4.0; +
    @数据源= C:\全路径无文件名; +
    @扩展属性=的dBASE III;))
使用(OleDbCommand的厘米= cn.CreateCommand())
{
    cn.Open();
    cm.CommandText =SELECT * FROM fox_samp; // fox_samp是你的文件名
    使用(OleDbDataReader博士= cm.ExecuteReader())
    {
        而(dr.Read())
        {
            Console.WriteLine(博士[0]);
        }
    }
}
 
excel转找为dbf后找不到dbf文件

我只是跑这个没有错误。而这个网站是非常有用的: ConnectionStrings.com

I'm trying to read a dBase III .dbf file using .NET and Winforms and nothing I've tried seem to work. I tried four different connection methods and every one of them hangs on Open method. No exceptions, no timeouts, no event messages, nothing. The form just sits there. Any ideas about what could be wrong?

Here's the methods I've tried. The .dbf file is at d:\db\:

private void read1()
        {
            string c = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\db\\;Extended Properties=dBASE III";
            OleDbConnection conn = new OleDbConnection(c);
            conn.Open();
            MessageBox.Show("ok");
            conn.Close();

        }

        private void read2()
        {
            System.Data.Odbc.OdbcConnection oConn = new System.Data.Odbc.OdbcConnection();
            oConn.ConnectionString = @"Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;SourceDB=D:\db;Exclusive=No; Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;";
            oConn.Open();
            System.Data.Odbc.OdbcCommand oCmd = oConn.CreateCommand();
            oCmd.CommandText = @"SELECT * FROM D:\db\Poi.dbf";
            DataTable dt = new DataTable();
            dt.Load(oCmd.ExecuteReader());
            MessageBox.Show(dt.Rows.Count.ToString());
            oConn.Close();
        }

        private void read3()
        {
            System.Data.Odbc.OdbcConnection oConn = new System.Data.Odbc.OdbcConnection();
            oConn.ConnectionString = @"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=d:\db;";
            oConn.Open();
            MessageBox.Show("ok");
            oConn.Close();
        }

        private void read4()
        {
            System.Data.Odbc.OdbcConnection oConn = new System.Data.Odbc.OdbcConnection();
            oConn.ConnectionString = @"Driver={Microsoft dBase Driver (*.dbf)};datasource=d:\db\";
            oConn.Open();
            System.Data.Odbc.OdbcCommand oCmd = oConn.CreateCommand();
            oCmd.CommandText = @"SELECT * FROM D:\db\Poi.dbf";
            DataTable dt = new DataTable();
            dt.Load(oCmd.ExecuteReader());
            MessageBox.Show(dt.Rows.Count.ToString());
            oConn.Close();
        }

解决方案

Try this:

using (OleDbConnection cn = new OleDbConnection(
    @"Provider=Microsoft.Jet.OLEDB.4.0;" + 
    @"Data Source=C:\full-path-without-filename;" + 
    @"Extended Properties=dBASE III;"))
using (OleDbCommand cm = cn.CreateCommand())
{
    cn.Open();
    cm.CommandText = "SELECT * FROM fox_samp"; // fox_samp is your filename
    using (OleDbDataReader dr = cm.ExecuteReader())
    {
        while (dr.Read())
        {
            Console.WriteLine(dr[0]);
        }
    }
}

I just ran this without errors. And this site can be very useful: ConnectionStrings.com