Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 1 odgovor
  • 2.311 pregleda

Najnovija ↓

Čitanje bloba iz baze 14.01.2008. u 23:48 · pre 228 meseci #1
Imam problem jedan.. imam bazu na MySQL, i koristim odbc u C#. Najprije pretvorim int polje u byte, i onda to zapisujem u bazu kao blob, no problem je pročitati. Gube mi se predznaci i to..
Evo koda, pa ako je netko voljan pomoći:

Zapis:
Code:

            byte[] bVektor = new byte[vektor.Length*4];
            byte[] bTmp;
            for (int i = 0; i < vektor.Length; i++)
            {
                bTmp = BitConverter.GetBytes(Convert.ToInt32(vektor[i]));// konvert double-a u int32, 32/8 = 4
                for (int j = 0; j < 4; j++)
                    bVektor[4*i + j] = bTmp[j]; // tu treba biti *4 jer inace se prepisuje preko postojecih vrijednosti :)
            }

            OdbcCom = new OdbcCommand("insert into table(vektor) values (?)", Form3.OdbcCon);
            OdbcCom.Parameters.Add("@vektor", OdbcType.Binary, bVektor.Length).Value = bVektor;


Čitanje:

Code:

                    OdbcCommand naredba = new OdbcCommand("SELECT vektor FROM table WHERE id = " + ID + ";", Form3.OdbcCon);
                    OdbcDataReader reader = naredba.ExecuteReader();
                    if (reader.Read())
                    {
                        vektorTmp = (byte[])reader[0];
                    }
                    ...

                vektor = new int[vektorTmp.Length];
                System.IO.MemoryStream ms = new System.IO.MemoryStream(vektorTmp.Length);
                MessageBox.Show(vektorTmp.Length.ToString());
                for (int i = 0; i < vektorTmp.Length/4; i++)
                {
                    vektor[i] = ms.Read(vektorTmp, i*4, 4);
                    richTextBox1.AppendText(" " + vektorTmp[i].ToString());
                }

Re: Čitanje bloba iz baze 15.01.2008. u 14:48 · pre 228 meseci #2
Problem ti je u castovanju jer kad ti prosledis int[] u Read koji prima byte[] Read nece razbiti intove u po 4 bjata, nego ce da ti ucita bajt po bajt i da ga castuje u int ;)

Iskreno ne znam sto se toliko smaras sa time. Kreiraj MemoryStream i zakaci za njega BinaryWriter i upucaj sve elemente u writer koristeci metod Write(int32) i na kraju izvuci bajtove iz memorystream-a i zapisi u bazu.

Pri citanju napravi memory stream nad ulaznim nizom bajtova koristeci konstruktor (byte[]), zakaci za njega BinaryReader i procitaj jedan po jedan int32 koristeci metod ReadInt32
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme