ERRO CONVERSÃO ESPECIFICADA NÃO É V?LIDA.
Olá , amigos . estou a salvar uma foto do SQLSERVER campo Image para Arquivo na Raiz do Sistema mais obtenho o erro
Erro Conversão especificada não é válida.
E aponta para essa linha clie_nom1 = mReader.GetInt32(0).ToString();
Tentei conversão (Byte) ... Int16 .... Strings ... Rows .... tudo que imaginarem , e esse trecho não vai
Alguem poderia ajudar
Erro Conversão especificada não é válida.
E aponta para essa linha clie_nom1 = mReader.GetInt32(0).ToString();
Tentei conversão (Byte) ... Int16 .... Strings ... Rows .... tudo que imaginarem , e esse trecho não vai
Alguem poderia ajudar
private void butImage_Click(object sender, EventArgs e)
{
if (txtClie_nom.Text.Equals([Ô][Ô]))
{
MessageBox.Show([Ô]Informe o Código[Ô]);
return;
}
else
{
getFotoArq(txtClie_nom.Text);
}
barraStatus.Text = [Ô]Arquivo Salvo no sistema[Ô];
}
// **** Le o BLOB a partir do banco de dados e salva no sistema de arquivos
public void getFotoArq(string cod)
{
SqlCommand getF = new SqlCommand([Ô]select clie_foto from Cadclie where Clie_cod= ([ô][Ô] + cboClie_cod.Text + [Ô][ô]) and Clie_empr = ([ô][Ô] + txtClie_empr.Text + [Ô][ô])[Ô], con);
getF.Parameters.Add([Ô]@CLIE_COD[Ô], SqlDbType.SmallInt).Value = Convert.ToInt16(cboClie_cod.Text);
getF.Parameters.Add([Ô]@CLIE_EMPR[Ô], SqlDbType.SmallInt).Value = Convert.ToInt16(txtClie_empr.Text);
FileStream fs; // Escreve o BLOB para o arquivo (*.bmp).
BinaryWriter bw; // Define um Streams para o objeto
int tamanhoBuffer = 100; // Tamanho do buffer do BLOB
byte[] byteSaida = new byte[tamanhoBuffer]; // o buffer BLOB byte[] para ser preenchido com GetBytes.
long retorno; // Os bytes retornados de GetBytes.
long inicioIndice = 0; // A posicao inicial no BLOB de saida
string clie_nom1 = [Ô][Ô]; // O codigo do funcionario em uso no arquivo
// Abre a conexão e le os dados no DataReader.
con.Open();
SqlDataReader mReader = getF.ExecuteReader(CommandBehavior.SingleRow);
while (mReader.Read())
{
clie_nom1 = mReader.GetInt32(0).ToString();
// Cria o arquivo para tratar a saida dos dados
fs = new FileStream([Ô]Cliente [Ô] + clie_nom1 + [Ô].jpg[Ô], FileMode.OpenOrCreate, FileAccess.Write);
bw = new BinaryWriter(fs);
// Reseta o byte de inicio para o novo BLOB.
inicioIndice = 0;
// Le os bytes no byteSaida[] e retem o numero de bytes retornados
retorno = mReader.GetBytes(1, inicioIndice, byteSaida, 0, tamanhoBuffer);
// Continua lendo e escrevendo enquanto existir bytes ate completar o tamanho do buffer
while (retorno == tamanhoBuffer)
{
bw.Write(byteSaida);
bw.Flush();
//Reposiciona o inidice de inicio para o fim ultimo buffer e preenche o buffer
inicioIndice += tamanhoBuffer;
retorno = mReader.GetBytes(1, inicioIndice, byteSaida, 0, tamanhoBuffer);
}
// Escreve o restante do buffer
bw.Write(byteSaida, 0, (int)retorno);
bw.Flush();
// fecha o arquivo de saida
bw.Close();
fs.Close();
}
// fecha o datareader e a conexao
mReader.Close();
con.Close();
}
Tenta assim pra ver se vai:
clie_nom1 = mReader[0].ToString();
ou assim:
clie_nom1 = (string) mReader[0];
Você tem certeza de que esse indice zero no MReader é referente ao campo nome no banco de dados mesmo?
clie_nom1 = mReader[0].ToString();
ou assim:
clie_nom1 = (string) mReader[0];
Você tem certeza de que esse indice zero no MReader é referente ao campo nome no banco de dados mesmo?
Utiliza essa função para gravar a imagem na pasta!
Como você sempre vai ter uma imagem por vez crie um único nome!
Espero ter ajudado
Como você sempre vai ter uma imagem por vez crie um único nome!
//Declaração fora do While
byte[] byteSaida = null;
//Dentro do While
byteSaida = mReader[[Ô]CAMPOFOTO[Ô]] as byte[];
if (byteSaida != null)
GetImage(byteSaida);
//Metodo VOID somente para carregar o Picture Caso tenha imagem grava no banco
public void GetImage(byte[] Logo)
{
MemoryStream stream = new MemoryStream(Logo);
System.Drawing.Image img = System.Drawing.Image.FromStream(stream);
string strPath = Application.StartupPath([Ô]assinatura.jpg[Ô]);
img.Save(strPath);
PictureBox1.Image = New Bitmap(strPath);
PictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;
}
Espero ter ajudado
Faça seu login para responder