sql >> Databáze >  >> RDS >> Sqlserver

Uložte obrázek do databáze a načtěte jej

Máte několik problémů s kódem. Budu to řešit řádek po řádku:

MemoryStream ms =new MemoryStream();
byte[] PhotoByte=null;
PhotoByte=ms.ToArray();
pictureBox1.Image.Save(ms, ImageFormat.Jpeg);
PhotoByte =ms.ToArray();

I když to není problém, máte zde zbytečné úkoly. Výše uvedený kód by mohl být jasněji napsán takto:

MemoryStream ms =new MemoryStream();
pictureBox1.Image.Save(ms, ImageFormat.Jpeg);
byte[] PhotoByte =ms.ToArray();

Dále následující kód nepoužívá parametry. Vždy, vždy, VŽDY parametrizujte své dotazy SQL namísto dynamického vytváření SQL. Ne, vážně, vždycky. Ano, i tehdy. (Také, co je Str variabilní? Nějaký druh znovu použité proměnné instance? Nedělejte to.)

Str = "insert into Experimmm Values('" + PhotoByte + "','" + textBox1.Text + "')";
Conn.Open();
cmd.Connection = Conn;
cmd.CommandText = Str;
cmd.ExecuteNonQuery();
Conn.Close();

Místo toho by to mělo být toto:

Conn.Open();
using(SqlCommand cmd = connection.CreateCommand())
{
    cmd.CommandText = "insert into Experimmm (column list) values(@data, @name)";

    cmd.Parameters.Add("@data", SqlDbType.VarBinary).Value = PhotoByte;
    cmd.Parameters.Add("@name", SqlDbType.VarChar, yourlength).Value = textBox1.Text;

    cmd.ExecuteNonQuery();
}
Conn.Close();

Dále přejdeme k vašemu vyhledávání. Opět pomocí Str proměnná, nic takového nedělejte. Také musíte parametrizovat tento dotaz.

byte[] data;
string name;

Conn.Open();
using(SqlCommand cmd = Conn.CreateCommand())
{    
    cmd.CommandText = "select column_list from Experimmm where id = @id";

    cmd.Parameters.Add("@id", SqlDbType.VarChar, field_length).Value = textBox2.Text;

    using(SqlDataReader dr = cmd.ExecuteReader())
    {
        if (dr.Read())
        {
            data = (byte[])dr.GetValue(0); 
            name = (string)dr.GetValue(1);
        }
    }
}
Conn.Close();

label1.Text = name;
pictureBox2.Image = Image.FromStream(new MemoryStream(data));


  1. ukládání obrázku do bajtu[] do Mysql pomocí asp.net a c#

  2. případ mysql v příkazu aktualizace s REPLACE

  3. SQL Server a synchronizace MySQL

  4. Laravel 'nemohl najít ovladač (SQL:vložit do...'