none
Como salvar imagem em tabela SqLite? RRS feed

  • Pergunta

  • Olá

    Gente, preciso salvar uma imagem em uma tabela SqLite.

    Uso o código a baixo, mas nao consigo adaptar:

      Using cn As New SQLiteConnection()
                    cn.ConnectionString = BancoDados_DataSource
                    Try
                        cn.Open()
                        Using com = cn.CreateCommand()
                            com.CommandText = "Update Empresa SET " &
                                        "NomeFantasia = '" & VerificaTextVazio(TextBox1.Text) & "'," &
                                        "Fone2 = '" & VerificaTextVazio(TextBox7.Text) & "' " &
                                        "WHERE C =1"
                            com.ExecuteNonQuery()
                        End Using
                    Catch ex As Exception
                    End Try
                End Using

    Alguém sabe como fazer? Já procurei na web mas não consegui encontrar uma solução.

    Desde já agradeço.

    sábado, 31 de dezembro de 2016 16:28

Respostas

  • Grava na base64 e utilize da seguinte forma:

    Classe para conversão:

    public static class ConvertImage
    {
    	public static string ImageToBase64(string path)
    	{
    		return Convert.ToBase64String(System.IO.File.ReadAllBytes(path));
    	}
    	public static string ImageToBase64(byte[] array)
    	{               
    		return Convert.ToBase64String(array);
    	}
    
    	public static byte[] Base64ToByte(string base64)
    	{
    		return Convert.FromBase64String(base64);
    	}
    }


    Classe Base:

    public class Imagem
    {
    	public int Id { get; set; }
    	public string Description { get; set; }
    	public string Picture { get; set; }
    }


    Gravar:

    Imagem imagem = new Imagem();
    imagem.Description = "Foto 2";
    imagem.Picture = ConvertImage.ImageToBase64("2.jpg");
    SQLiteConnection connection = new SQLiteConnection(@"Data Source=c:\Temp\base.db;");
    connection.Open();
    SQLiteCommand command = connection.CreateCommand();
    command.CommandText = "INSERT INTO Imagem(Description, Picture) VALUES(@Description, @Picture);";
    command.Parameters.Add("@Description", System.Data.DbType.String).Value = imagem.Description;
    command.Parameters.Add("@Picture", System.Data.DbType.String).Value = imagem.Picture;
    command.ExecuteNonQuery();
    connection.Dispose();

    Recuperando:

    SQLiteConnection connection = new SQLiteConnection(@"Data Source=c:\Temp\base.db;");
    connection.Open();
    SQLiteCommand command = connection.CreateCommand();
    command.CommandText = "SELECT * FROM Imagem WHERE Id=@Id";
    command.Parameters.Add("@Id", System.Data.DbType.Int32).Value = 1;
    SQLiteDataReader reader = command.ExecuteReader();
    if (reader.HasRows)
    {
    	reader.Read();
    	var result = ConvertImage.Base64ToByte((string)reader["Picture"]);
    	System.IO.File.WriteAllBytes(@"C:\Temp\001.jpg", result);
    }
    connection.Dispose();


    Fulvio C

    • Marcado como Resposta Eliseu5 terça-feira, 3 de janeiro de 2017 02:12
    segunda-feira, 2 de janeiro de 2017 14:34

Todas as Respostas

  • Olá,

    Como sugestão inicial, eu recomendo converter a imagem para base64 ou bytes e salvar no banco.

    Segue uma thread que mostra como realizar a conversão: http://stackoverflow.com/questions/4496852/how-can-i-store-and-retrieve-an-image-using-an-sqlite-database-and-a-wpf-applica

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    segunda-feira, 2 de janeiro de 2017 01:59
  • Grava na base64 e utilize da seguinte forma:

    Classe para conversão:

    public static class ConvertImage
    {
    	public static string ImageToBase64(string path)
    	{
    		return Convert.ToBase64String(System.IO.File.ReadAllBytes(path));
    	}
    	public static string ImageToBase64(byte[] array)
    	{               
    		return Convert.ToBase64String(array);
    	}
    
    	public static byte[] Base64ToByte(string base64)
    	{
    		return Convert.FromBase64String(base64);
    	}
    }


    Classe Base:

    public class Imagem
    {
    	public int Id { get; set; }
    	public string Description { get; set; }
    	public string Picture { get; set; }
    }


    Gravar:

    Imagem imagem = new Imagem();
    imagem.Description = "Foto 2";
    imagem.Picture = ConvertImage.ImageToBase64("2.jpg");
    SQLiteConnection connection = new SQLiteConnection(@"Data Source=c:\Temp\base.db;");
    connection.Open();
    SQLiteCommand command = connection.CreateCommand();
    command.CommandText = "INSERT INTO Imagem(Description, Picture) VALUES(@Description, @Picture);";
    command.Parameters.Add("@Description", System.Data.DbType.String).Value = imagem.Description;
    command.Parameters.Add("@Picture", System.Data.DbType.String).Value = imagem.Picture;
    command.ExecuteNonQuery();
    connection.Dispose();

    Recuperando:

    SQLiteConnection connection = new SQLiteConnection(@"Data Source=c:\Temp\base.db;");
    connection.Open();
    SQLiteCommand command = connection.CreateCommand();
    command.CommandText = "SELECT * FROM Imagem WHERE Id=@Id";
    command.Parameters.Add("@Id", System.Data.DbType.Int32).Value = 1;
    SQLiteDataReader reader = command.ExecuteReader();
    if (reader.HasRows)
    {
    	reader.Read();
    	var result = ConvertImage.Base64ToByte((string)reader["Picture"]);
    	System.IO.File.WriteAllBytes(@"C:\Temp\001.jpg", result);
    }
    connection.Dispose();


    Fulvio C

    • Marcado como Resposta Eliseu5 terça-feira, 3 de janeiro de 2017 02:12
    segunda-feira, 2 de janeiro de 2017 14:34
  • Olá Fulvio

    Muito obrigado :)

    terça-feira, 3 de janeiro de 2017 02:12
  • Olá Fulvio

    Muito obrigado :)

    Disponha.

    Fulvio C

    terça-feira, 3 de janeiro de 2017 12:45