从 DBF 到 C# 程序的字符串数据



我有一个连接到dbf文件的c#程序:

OdbcConnection oconn = new OdbcConnection();
oconn.ConnectionString =
    "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + pelna_sciezka + ";Exclusive=No; Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;";
oconn.Open();
OdbcCommand ocmd = oconn.CreateCommand();
ocmd.CommandText = @"SELECT * FROM " + pelna_sciezka + " where Kod_kontr = '" + row.KNH_KOD + "'";
// ocmd.ExecuteNonQuery();
OdbcDataReader odr = ocmd.ExecuteReader();
while (odr.Read())
{
    kod_kontr = odr["Kod_kontr"].ToString();
    Nzwakontr1 = odr["Nzwakontr1"];
    Nzwakontr2 = odr["Nzwakontr2"];
}

连接运行良好,但是当我想将数据组装到局部字符串变量(kod_kontr,nzwakontr1(时,我得到的值只是System.Byte[]。当我想从这个dbf获取其他类型的数据(例如日期,数字等(时,一切正常。问题仅出在瓦尔查尔数据上。我该如何解决我的问题?

感谢任何帮助


根据安东尼奥·巴库拉的帮助,我已经阅读了答案:

我必须从 ODBC 更改为 OLE,并且:- 将连接字符串更改为:奥康恩。ConnectionString = "Provider=vfpoledb.1;Data Source="+pelna_sciezka+";整理序列=机器";为此更改代码:

OleDbDataReader odr = ocmd.执行读取器((;

            while (odr.Read())
            {
              //  byte[] A = Encoding.GetEncoding(Encoding.Default.CodePage).GetBytes(odr.GetString(0));
              //  string p = Encoding.Unicode.GetString((Encoding.Convert(Encoding.GetEncoding(850), Encoding.Unicode, A)));
                kod_kontr = OdczytajTabliceBajtow(odr["Kod_kontr"]);
                Nzwakontr1 = OdczytajTabliceBajtow(odr["Nzwakontr1"]);
                Nzwakontr2 = OdczytajTabliceBajtow(odr["Nzwakontr2"]);
            }

其中OdczytajTabliceBajtow:

private string OdczytajTabliceBajtow(object p( { 编码 enc8 = 编码.ASCII; 字符串 wynik = "; 字节[] 字节 = (字节[](p; StringBuilder sb = new StringBuilder((; 某人。Append(Encoding.ASCII.GetChars(bytes((; 威尼克 = SB。ToString((; 返回怀尼克; }

这是我问题的解决方案。谢谢大家的帮助。

我建议您使用 FoxPro 的 OleDB 驱动程序,您不会遇到这些问题,并且速度会有显着提高,这里是链接

http://www.microsoft.com/en-us/download/details.aspx?id=14839

然后,您将从DataReader获得字符字段的字符串值

相关内容

  • 没有找到相关文章

最新更新