Avatar billede pimpf202 Nybegynder
17. september 2004 - 09:48 Der er 7 kommentarer og
1 løsning

indsæt af billede

Hejsa,

Jeg har brug for et helt simpelt eksempel på hvordan jeg indsætter et billede i en kolonne af datatypen image.
På forhånd tak
Avatar billede arne_v Ekspert
17. september 2004 - 09:55 #1
PHP ? ASP ? C++ ? Java ? C# ?
Avatar billede pimpf202 Nybegynder
17. september 2004 - 10:37 #2
Min fejl :-)
t-sql
Avatar billede arne_v Ekspert
17. september 2004 - 10:54 #3
Det er jo altid T-SQL.

Men er det fra EM eller ISQL/OSQL ?

Jeg har aldrig prøvet det fra disse.

Altid fra et program.
Avatar billede pimpf202 Nybegynder
17. september 2004 - 12:17 #4
Det er rigtig nok, men hvis du eks. har lavet det i asp eller lign, så må den t-sql kode du fyre af stå der, og så er det bare den jeg er interesseret i...
Avatar billede arne_v Ekspert
17. september 2004 - 23:24 #5
Man bruger bare en helt normal INSERT. Finessen er at man i programmerings
sprog kan læse filen ind i et byte array og så bruge de binære data i en INSERT
via parameters (prepared statement i Java). Det kan du ikke i EM/ISQL/OSQL.
Avatar billede pimpf202 Nybegynder
18. september 2004 - 12:12 #6
jeg kan bare ikke finde ud af hvordan jeg laver en sådanne insert, og jeg synes ikke at jeg kan finde noget om det i bol...

det fungere jo ikke særlig godt hvis jeg laver en : insert into grafik values ("c:\billede.jpg")... Så hvis du kunne give mig et insert eksempel, ville jeg blive meget glad
Avatar billede arne_v Ekspert
18. september 2004 - 16:20 #7
Du bad om det - her er det:

using System;
using System.IO;
using System.Data;
using System.Data.SqlClient;

class MainClass
{
    public static void Main(string[] args)
    {
        // connect
        SqlConnection con = new SqlConnection("server=ARNEPC2\\ARNEPC2RUN;Integrated Security=SSPI;database=TestMSDE");
        con.Open();
       
        // create table
        SqlCommand cre = new SqlCommand("CREATE TABLE imgtest (id INTEGER PRIMARY KEY,img IMAGE)", con);
        cre.ExecuteNonQuery();

        // file -> byte array
        Stream imgfile = new FileStream(@"C:\blue.jpg", FileMode.Open);
        byte[] imgdata = new byte[(int)imgfile.Length];
        imgfile.Read(imgdata, 0, imgdata.Length);
        imgfile.Close();
       
        // insert
        SqlCommand ins = 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();

        // select
        SqlCommand sel = new SqlCommand("SELECT img FROM imgtest WHERE id = @id", con);
        sel.Parameters.Add("@id", SqlDbType.Int);
        sel.Parameters["@id"].Value = 1;
        byte[] imgdata2 = (byte[])sel.ExecuteScalar();
       
        // drop table
        SqlCommand drp = new SqlCommand("DROP TABLE imgtest", con);
        drp.ExecuteNonQuery();
       
        // byte array -> file
        Stream imgfile2 = new FileStream(@"C:\blue2.jpg", FileMode.Create);
        imgfile2.Write(imgdata2, 0, imgdata2.Length);
        imgfile2.Close();

        // disconnect
        con.Close();
    }
}
Avatar billede pimpf202 Nybegynder
23. september 2004 - 12:17 #8
Det var ikke lige det som jeg havde forstillet mig. Men jeg vil gerne acceptere dit svar alligevel, da jeg er meget glad for at du har forsøgt at hjælpe mig. jeg har selv fundet løsningen, og til dem der er interesseret, er det at sql serveren, har en funktion der hedder textcopy.exe. denne kan du give en /? , og så har du den komplette syntaks for hvordan den bruges.
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
Computerworld tilbyder specialiserede kurser i database-management

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