Laden...

Bild in Access-Datenbank speichern/auslesen?

Erstellt von Schattenkanzler vor 18 Jahren Letzter Beitrag vor 18 Jahren 5.732 Views
S
Schattenkanzler Themenstarter:in
238 Beiträge seit 2004
vor 18 Jahren
Bild in Access-Datenbank speichern/auslesen?

Hallo!

Also, ich habe bisher zwar schon einige Themen dazu gefunden, jedoch konnte davon bisher keins mein Problem lösen.

Ich mache folgendes:

  1. Ich verbinde zu einer lokalen Access-Datenbank.
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbpath + ";User Id=" + user + ";Password=" + pass + ";";

ist der Connection-String.

  1. Nun möchte ich mittels folgendem Code ein Bild in diese DB schreiben:
public void Insert(string sql)
        {
            myConnection = new OleDbConnection(con_string);
            myCommand = new OleDbCommand(sql, myConnection);
            try
            {
                myConnection.Open();
                myCommand.ExecuteNonQuery();
            }
            catch(Exception ex)
            {
                throw ex;
            }
            finally
            {
                myConnection.Close();
            }
        }
  1. Der Aufruf sieht so aus:
DBAccess myDB = new DBAccess("", "", Application.StartupPath + "\\data\\database.mdb");
[...]
string sql = "INSERT INTO Tabelle (Category, SubCategory, Detail, Item, Links, Description, Picture) VALUES ('Testkategorie', 'Testunterkategorie', 'Testdetailkategorie', 'Testitem', 'Some link;Some link', 'Testbeschreibung', '" + saveMe + "')";

Dabei habe ich für "saveMe" schon verschiedene Sachen ausprobiert.
Einmal habe ich versucht, das Bild (befindet sich zu Dev-Zwecken in einer pictureBox) einfach so zu benutzen (in der Datenbank befindet sich dazu ein OLE-Objekt). Das hat nicht geklappt.
Dann habe ich versucht, das Bild zu speichern, wieder einzulesen und dann mittels

System.Text.Encoding.Ascii.GetString(data)

als String zu speichern.

All das klappt nicht. Meistens bekomme ich den Fehler, dass für mindestens einen erforderlichen Parameter kein Wert angegeben wurde, was aber nicht stimmt.
Wenn ich die letzte Variante mit dem erneuten Einlesen versuche, kriege ich die Meldung, dass der zu speichernde Ausdruck ungültig sei (hier habe ich in der Datenbank ein Memo benutzt).

Also, hier meine konkrete Frage: Wie kann man Bilder, die der Benutzer von seiner Platte auswählt, in der Datenbank speichern und auch wieder anzeigen?

Hier vielleicht noch mal mein Code zum Select:

 public  DataTable Select(string sql)
        {
        	bool close_connection = false;
        	
          	DataTable returntable = new DataTable();
          	OleDbDataAdapter myDataAdapter = new OleDbDataAdapter();
          	          	
          	if(con_string != "")
          	{
          		try
          		{
          			myConnection = new OleDbConnection(con_string);
          		}
          		catch (Exception e)
          		{
          			MessageBox.Show("Error: " + e.Message);
          		}
            
            	try
            	{
            		myDataAdapter.SelectCommand = new OleDbCommand(sql, myConnection);
            	}
            	catch (Exception e)
           		{
            		MessageBox.Show(e.Message,"Fehler!");
            	}
            
           		myDataAdapter.Fill(returntable);
           		close_connection = true;
          	}
          	else
          	{
          		Exception ex = new Exception("Kein Verbindungs-String!");
          		throw ex;
          	}
          	
          	if(close_connection == true)
          	{
          	   	myConnection.Close();
          	}
          	
            return returntable;
        }

Hoffentlich finde ich hier Hilfe...

Greets - SK

Sagte ich schon Danke? Nein? ...kommt noch...

N
4.644 Beiträge seit 2004
vor 18 Jahren
S
Schattenkanzler Themenstarter:in
238 Beiträge seit 2004
vor 18 Jahren

Hmm, danke!
Nach BLOB hatte ich nicht gesucht...hab ich einfach verschwitzt...
Na ja, vielleicht geht es ja mal jemandem ähnlich, dann ist dieser Thread nicht ganz sinnlos... 😁

Greets - SK

Sagte ich schon Danke? Nein? ...kommt noch...

N
4.644 Beiträge seit 2004
vor 18 Jahren

Original von Schattenkanzler
Nach BLOB hatte ich nicht gesucht...hab ich einfach verschwitzt...

Ich auch nicht. 😉
Suchworte -> Bild speichern Access

S
Schattenkanzler Themenstarter:in
238 Beiträge seit 2004
vor 18 Jahren

Hmm, hatte unter bild AND access gesucht...allerdings kann es sogar sein, dass ich den Eintrag gesehen habe, ihn aber übersprungen habe, da ich wie gesagt nicht nach BLOBs gesucht habe...

Danke dir auf jeden Fall!

Greets - SK

Sagte ich schon Danke? Nein? ...kommt noch...