Jump to content
sYnced

Inserir imagem em Base de Dados SQL

Recommended Posts

sYnced

Boas enganei-me acima, é em MYSQL, Apenas tinha conseguido já fazer em sql

Boas pessoal estou com um problema, consegui inserir em sql server mas em mysql não consigo, é mesmo necessário inserir a imagem na base de dados, o meu código é o seguinte:

//converter imagem para bytes
 public static byte[] convertfoto(Image img)
 {
	 byte[] byteArray = new byte[0];
	 using (MemoryStream stream = new MemoryStream())
	 {
		 img.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
		 stream.Close();
		 byteArray = stream.ToArray();
	 }
	 return byteArray;
 }
 //converter bytes para imagem
 public static Image byte2image(byte[] pic)
 {
	 MemoryStream ms = new MemoryStream(pic);
	 Image img = Image.FromStream(ms);
	 return img;
 }

A querie está direita.

MySqlParameter picparameter = new MySqlParameter();
		 picparameter.MySqlDbType = MySqlDbType.Binary;
		 picparameter.ParameterName = "Fotografia";
		 picparameter.Value = inserir.Foto;
		 MySqlCommand cmd = new MySqlCommand(querie.ToString(), cn);
		 cmd.Parameters.Add(new MySqlParameter("@DataDeNascimento", MySqlDbType.DateTime)).Value = inserir.DtNascimento;
		 cmd.Parameters.Add(picparameter);
		 cmd.ExecuteNonQuery();

PS: Já tentei BLOB

Cumprimentos...

Edited by sYnced

Share this post


Link to post
Share on other sites
nelsonr

A parte de converter a imagem para byte[] e vice-versa parece-me ok.

Qual é o problema exacto? Não fica nada no campo?

Qual é o tipo de campo que tens na base de dados?

Edited by nelsonr

Share this post


Link to post
Share on other sites
sYnced

Só dá bit, byte binary, aliás bit dá erro, por norma usei binary mas ao converter de byte para imagem deu me um erro... Antes do cmd.ExecuteNonQuery();

Para sql server bastava por .image, aqui não tinha pus em binary que ia dar ao mesmo!

Share this post


Link to post
Share on other sites
nelsonr

Nunca testei com MySQL, mas pelo que vejo aqui, o formato convem ser blob (tinyblob, blob, mediumblob ou longblob)

http://www.phpriot.com/articles/storing-images-in-mysql/3

Se o erro é ao converter dos dados lidos da base de dados, podes fazer um teste rapido.

Numa imagem pequena, antes de gravares vês o que tens dentro do byte[].

Depois lês e vês o que está no byte[]. Se for diferente é porque a parte da gravação/leitura não está bem.

Share this post


Link to post
Share on other sites
sYnced

São diferentes(dados), só me passa a posição 0...

public static byte[] SelectPicUser(ClienteGestao cli)
 {
	 object pic = new object();
	 MySqlConnection cn = new MySqlConnection(cs);
	 cn.Open();
	 string querie = "Select Fotografia from cliente where id="+cli.ID+"";
	 MySqlCommand cmd = new MySqlCommand(querie, cn);
	 cmd.ExecuteNonQuery();
	 pic = cmd.ExecuteScalar();
	 byte[] imagedata = new byte[0];
	 imagedata = (byte[]) pic;
	 return imagedata;
 }

Ando a ficar doido...

Edited by sYnced

Share this post


Link to post
Share on other sites
TutoDS

Boas.
Precisava de fazer o mesmo, mas com SQL e não MySql.
Podes me ajudar?

Share this post


Link to post
Share on other sites
General
23 hours ago, TutoDS said:

Boas.
Precisava de fazer o mesmo, mas com SQL e não MySql.
Podes me ajudar?

Experimenta gravar bytes convertidos em base64. 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.