Note that there are some explanatory texts on larger screens.

plurals
  1. POstring data from dbf to c# program
    primarykey
    data
    text
    <p>I've got a c# program, which is connected to dbf file:</p> <pre><code>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"]; } </code></pre> <p>connection is working very well, but when I want to assemble data to local string variables (kod_kontr, nzwakontr1), all i get for a value is <code>System.Byte[]</code>. When I want to get the other types of data (f.ex. date, numeric, etc)from this dbf, everything is working well. The problem is only for varchar data . How could I solve my problem? </p> <p>Thanx for any help</p> <hr> <p>According to Antonio Bakula help i've read the answer:</p> <p>I must change from ODBC to OLE, and: - change connectionstring to: oconn.ConnectionString = "Provider=vfpoledb.1;Data Source="+pelna_sciezka+";Collating Sequence=machine"; change code for that:</p> <p>OleDbDataReader odr = ocmd.ExecuteReader();</p> <pre><code> 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"]); } </code></pre> <p>where OdczytajTabliceBajtow:</p> <p>private string OdczytajTabliceBajtow(object p) { Encoding enc8 = Encoding.ASCII; string wynik = ""; Byte[] bytes = (Byte[])p; StringBuilder sb = new StringBuilder(); sb.Append(Encoding.ASCII.GetChars(bytes)); wynik = sb.ToString(); return wynik; }</p> <p>This is the solution of my problem. Thank you all for help.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload