Avatar billede expnet Seniormester
14. august 2009 - 17:25 Der er 6 kommentarer og
1 løsning

sqlite -> opret tabel med type image

Hej exp'er

Jeg er sidder med en database hvor jeg lave en tabel og der har jeg 3 felter

id - integer
name - text
foto - image

jeg ville gerne høre om der nogle der kan hjælpe mig lidt på vej med hvordan jeg få gemt et billede i og hente frem igen...
Avatar billede arne_v Ekspert
14. august 2009 - 17:33 #1
SQLiteCommand med Parameters og byte[] som .NET type for billedet.
Avatar billede expnet Seniormester
14. august 2009 - 17:40 #2
arne_v

har mulighed for at give et eksempel, eller nogle links til nogle steder hvor man kan lærer det...
Avatar billede arne_v Ekspert
14. august 2009 - 17:51 #3
Der er et C# eksempel her:
  http://www.eggheadcafe.com/articles/20041022.asp

Men jeg kan sikkert bixe et VB.NET eksempel senere.
Avatar billede arne_v Ekspert
14. august 2009 - 17:53 #4
Her er et VB.NET eksempel med SQLServer:

Imports System
Imports System.IO
Imports System.Data
Imports System.Data.SqlClient

Class MainClass

    Public Shared Sub Main(ByVal args As String())
        Dim con As SqlConnection = New SqlConnection ("server=ARNEPC2\ARNEPC2RUN;Integrated Security=SSPI;database=TestMSDE")
        con.Open
        Dim cre As SqlCommand = New SqlCommand ("CREATE TABLE imgtest (id INTEGER PRIMARY KEY,img IMAGE)", con)
        cre.ExecuteNonQuery
        Dim imgfile As Stream = New FileStream ("C:\blue.jpg", FileMode.Open)
        Dim siz As Integer = imgfile.Length
        Dim imgdata(siz-1) As Byte
        imgfile.Read(imgdata, 0, imgdata.Length)
        imgfile.Close
        Dim ins As SqlCommand = New SqlCommand ("INSERT INTO imgtest VALUES(@id,@img)", con)
        ins.Parameters.Add("@id", SqlDbType.Int)
        ins.Parameters.Add("@img", SqlDbType.Image)
        ins.Parameters("@id").Value = 1
        ins.Parameters("@img").Value = imgdata
        ins.ExecuteNonQuery
        Dim sel As SqlCommand = New SqlCommand ("SELECT img FROM imgtest WHERE id = @id", con)
        sel.Parameters.Add("@id", SqlDbType.Int)
        sel.Parameters("@id").Value = 1
        Dim imgdata2 As Byte() = CType(sel.ExecuteScalar, Byte())
        Dim drp As SqlCommand = New SqlCommand ("DROP TABLE imgtest", con)
        drp.ExecuteNonQuery
        Dim imgfile2 As Stream = New FileStream ("C:\blue2.jpg", FileMode.Create)
        imgfile2.Write(imgdata2, 0, imgdata2.Length)
        imgfile2.Close
        con.Close
    End Sub
End Class

Lidt groft sagt skal klassenavnene baer aendres for at virke med SQLite.
Avatar billede expnet Seniormester
18. august 2009 - 11:04 #5
arne_v -> du må undskylde at jeg først svare tilbage nu...

Jeg kunne bruge noget fra din kode...

hvis det ikke er for meget vil jeg høre om du kan fortælle mig

hvordan man tjekker om der er noget i tablen
Avatar billede arne_v Ekspert
18. august 2009 - 18:32 #6
ExecuteScalar returnerer Nothing hvis der ikke er data.
Avatar billede arne_v Ekspert
22. august 2009 - 04:32 #7
Og et svar fra mig.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester