Avatar billede tomjelen Nybegynder
26. februar 2004 - 15:47 Der er 9 kommentarer og
1 løsning

Hvordan gemmer jeg binær data i en mssql db med oledb provider?

Jeg har oprettet en kolonne i min MSSQL DB af typen Image, da jeg gerne vil opbevare nogle små billeder der. Jeg har gemt mit billed i et byte[], som jeg nu gerne vil gemme ned i databasen.
Jeg kan få det til at virke med SqlClient, hvor jeg går således:
public void setBinaryData(byte[] b)       
{
    conn.Open();
    SqlCommand addBin = new SqlCommand(
        "INSERT INTO tblBinary ("+
        "BinID,BinData) "+
        "VALUES(@BinID,@BinData)",conn);

    addBin.Parameters.Add("@BinID", SqlDbType.Int).Value = 1;
    addBin.Parameters.Add("@BinData", SqlDbType.Image, b.Length).Value = b;

    addBin.ExecuteNonQuery();
    conn.Close();
}

Men jeg er nu tvunget til at bruge en oledb provider og kan ikke få det til at fungere.
Avatar billede arne_v Ekspert
26. februar 2004 - 15:58 #1
Hvad sker der når du laver den normale søg og erstat fra "Sql" til "OleDb" ?
Avatar billede tomjelen Nybegynder
26. februar 2004 - 16:03 #2
OleDbType.Int findes ikke, men der er en OleDbType.Interger i stedet som man skulle mene var OK. Ved Image ligner det eneste alternativ OleDbType.Binary, hvilket jeg ikke tror er helt det sammen.

Men fejlen der kommer, når jeg laver de to udskift er dette:

Unhandled Exception: System.Data.OleDb.OleDbException: Must declare the variable
'@BinID'.
  at System.Data.OleDb.OleDbDataReader.NextResults(IMultipleResults imultipleRe
sults, OleDbConnection connection, OleDbCommand command)
  at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behav
ior, String method)
  at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
  at ERS.DbControl.setBinaryDataer(Byte[] b) in e:\ers\ers\dbcontrol.cs:line 17
9
  at ERS.Class1.Main(String[] args) in e:\ers\ers\start.cs:line 35
Avatar billede arne_v Ekspert
26. februar 2004 - 16:25 #3
Jeg ville nok bruge OleDbType.VarBinary eller OleDbType.LongVarBinary
Avatar billede arne_v Ekspert
26. februar 2004 - 16:29 #4
Jeg tror muligvis at du skal bruge ? i OleDbCommand
Avatar billede arne_v Ekspert
26. februar 2004 - 16:29 #5
Avatar billede tomjelen Nybegynder
26. februar 2004 - 16:35 #6
Har lige prøvet at ændre til de to typer, der er ingen forskel i fejlbeskeden, virker ikke som om den når til OleDbType'erne før fejlen sker.
Avatar billede tomjelen Nybegynder
26. februar 2004 - 16:55 #7
Vi kommer tilbage til det i morgen tidlig, men ser umidlbart ud til at virke har bare lidt problemer med at finde en type der fungere istedet for smalldatetime.
Avatar billede arne_v Ekspert
26. februar 2004 - 17:01 #8
OK
Avatar billede arne_v Ekspert
26. februar 2004 - 22:07 #9
Jeg ligger lige et svar
Avatar billede tomjelen Nybegynder
27. februar 2004 - 10:10 #10
Det virker, takker
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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