[ explorer-1 @ 14.01.2008. 22:48 ] @
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());
                }

[ mmix @ 15.01.2008. 13:48 ] @
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