Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Čitanje bloba iz baze

[es] :: .NET :: Čitanje bloba iz baze

[ Pregleda: 1808 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

explorer-1

Član broj: 98573
Poruke: 102
*.adsl.net.t-com.hr.



Profil

icon Čitanje bloba iz baze14.01.2008. u 22:48 - pre 198 meseci
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());
                }

 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Čitanje bloba iz baze15.01.2008. u 13:48 - pre 198 meseci
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
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ć
 
Odgovor na temu

[es] :: .NET :: Čitanje bloba iz baze

[ Pregleda: 1808 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.