Usuário com melhor resposta
Como salvar imagem em tabela SqLite?

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.
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
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 -
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
-
-