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...
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.
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
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();
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.
Synes godt om
Ny brugerNybegynder
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.