Avatar billede BenedikteJ Nybegynder
16. december 2010 - 23:07 Der er 8 kommentarer og
1 løsning

Hente billede fra MySQL database til picturebox

Jeg har en simpel MySQL database med en tabel bestående af 3 kolonner - et id, en tekst (sti til billede) og et parentid (henviser til en anden tabel)

Jeg arbejder i Visual Studio i c# Windows Form og det er så meningen jeg skal hentet billedet fra databasen ind i min picturebox.

Jeg har kun følgende, og er ret meget på bar bund...

string connectionString = "Server=Localhost;Database=db_matematik;Uid=root;Pwd=1234;";
            database = new SqlConnection(connectionString);
            database.Open();
            //SQL query
            string queryString = "SELECT * FROM tbl_questions WHERE fld_id=1";

Er der nogen der kan hjælpe?..
Avatar billede Syska Mester
16. december 2010 - 23:16 #1
pictureBox1.ImageLocation = "den location du nu henter ud";

Skal du også have hjælp til MySql delen ?
Avatar billede BenedikteJ Nybegynder
16. december 2010 - 23:21 #2
Ja. Hele det med at få hentet billedet ud af databasen og ind i min picturebox er jeg fuldstændig blank på (ny i faget).
Avatar billede Syska Mester
16. december 2010 - 23:30 #3
Nu skriver du MySQL ... men bruger klasserne til en SQL ?

Er det MSSQL eller MySQL du bruger ?

hvis det er mysql, kan du hente en .NET connector her: http://www.mysql.com/downloads/connector/net/

mvh
Avatar billede BenedikteJ Nybegynder
16. december 2010 - 23:44 #4
Det er MySql. Jeg har .NET connector.
Avatar billede Syska Mester
16. december 2010 - 23:52 #5
Så skal du i hvert fald starte med at bruge de rigtige klasser, hvis du allerede har .NET connectoren inde.

Noget ala det her:
SqlConnection connection = new SqlConnection("din con string");
                SqlCommand sqlCommand = new SqlCommand("SELECT sti FROM tbl_questions WHERE fld_id = @Id", connection);
                sqlCommand.Parameters.Add("@Id", SqlDbType.Int).Value = 1;
                connection.Open();
                object executeScalar = sqlCommand.ExecuteScalar();
                connection.Close();
                pictureBox1.ImageLocation = executeScalar.ToString();

Dog har jeg brugt SQL klasserne, i stedet for MySQL klasserne.
mvh
Avatar billede BenedikteJ Nybegynder
17. december 2010 - 00:33 #6
Det virker, nu kan jeg hente billedet frem. Jeg siger mange tak..

I linjen med object executeScalar = sqlCommand.ExecuteScalar();
Hvad gør den?
Det er bare lige for min forståelses skyld..
Avatar billede Syska Mester
17. december 2010 - 00:41 #7
Den henter første Column ud ... dog vil den rejle hvis din sql command returnere flere rows.

For god ordens skyld og for andre som måtte finde dette senere, så post gerne det endelig resultat.

mvh
Avatar billede BenedikteJ Nybegynder
17. december 2010 - 00:48 #8
Tak, det skal jeg nok.

Hvad så hvis man gerne vil hente 2 rækker ud?
Avatar billede Syska Mester
17. december 2010 - 00:55 #9
SqlConnection connection = new SqlConnection();
SqlCommand sqlCommand = new SqlCommand("SELECT sti, fld_id FROM tbl_questions WHERE fld_id = @Id", connection);
sqlCommand.Parameters.Add("@Id", SqlDbType.Int).Value = 1;
connection.Open();
SqlDataReader reader = sqlCommand.ExecuteReader(CommandBehavior.CloseConnection);
while (reader.Read())
{
    object s1 = reader["sti"]; // Via navn, men du får et object ud.
    object s2 = reader["fld_id"]; // Via navn, men du får et object ud.
    string s3 = reader.GetString(0); // Via den index. Her er den konverteret til en string. Der findes også til int32, etc.
    int s4 = reader.GetInt32(1);
}
reader.Dispose();

og svar.
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