Avatar billede kkaen Nybegynder
15. marts 2006 - 11:11 Der er 7 kommentarer og
1 løsning

SELECT over i dataset

HVorfor kan jeg ikke få indholdet fra et selectstatement over i et dataset? Den siger noget med, at datatyperne ikke stemmer overens.
Her er min kode:
string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Inetpub\\wwwroot\\projekt\\LøbeDatabase.mdb;User Id=admin;Password=;";
        string query = "SELECT T_Profile.F_Name, T_Profile.F_Adress, T_Profile.F_Birthdate, T_Profile.F_Sex, T_Profile.F_Phonenumber, T_Profile.F_Zipcode, T_Profile.F_Mail FROM T_Profile WHERE F_Id="1"";
        System.Diagnostics.Debug.Write("\n*" + query.ToString() + "\n");
        OleDbConnection con = new OleDbConnection(ConnectionString);
        OleDbCommand command = new OleDbCommand(query, con);
        OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(command);
        con.Open();
        DataSet myDataSet = new DataSet();
        myDataAdapter.Fill(myDataSet);
        con.Close();

Og fejlen kommer jo så i linien:
myDataAdapter.Fill(myDataSet);
Avatar billede kkaen Nybegynder
15. marts 2006 - 15:18 #1
Nu har jeg lavet lidt om i koden, så den nu er:

public DataSet doRun(int id)
    {
        string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Inetpub\\wwwroot\\Projekt\\App_Data\\LøbeDatabase.mdb;User Id=admin;Password=;";
        string query = "SELECT T_Profile.F_Name, T_Profile.F_Adress, T_Profile.F_Birthdate, T_Profile.F_Sex, T_Profile.F_Phonenumber, T_Profile.F_Zipcode, T_Profile.F_Mail FROM T_Profile WHERE F_Id=" + id + ";";
        System.Diagnostics.Debug.Write("\n" + query.ToString() + "\n");
        DataSet myDataSet = new DataSet();
        OleDbConnection con=new OleDbConnection();
        try
        {
            con = new OleDbConnection(ConnectionString);
            OleDbCommand command = new OleDbCommand(query, con);
            OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(command);
            con.Open();
            System.Diagnostics.Debug.Write("\nquery er: " + query.ToString());
            myDataAdapter.Fill(myDataSet);
        }
        catch (Exception e)
        {
            System.Diagnostics.Debug.Write("\nFejlen er: " + e.ToString());
        }
        finally
        {
            con.Close();
            System.Diagnostics.Debug.Write("\nDataset indeholder:\n");
            for(int i=1; i<3; i++){
                System.Diagnostics.Debug.Write("\n"+myDataSet.Tables["T_Profile"].Rows[i].ToString());
            }
        }
        System.Diagnostics.Debug.Write("\nhar dataset T_Profile i sig?: " + myDataSet.Tables.Contains("T_Profile") + "\n");
        System.Diagnostics.Debug.Write("\nnoget af indholdet: " + myDataSet.Tables[0].Rows[0].ToString());
        return myDataSet;
    }

Som det kan ses udfra min for-løkke, så har jeg prøvet at dot'te mig ind på løsningen. Men det fungerer ikke.
Meningen med koden her er, at jeg vil finde ud af, hvilket felt, der er data i, og om der overhovedet er noget data i feltet p.t..
Avatar billede kkaen Nybegynder
15. marts 2006 - 15:41 #2
Når jeg forsøger, så kommer fejlen:
NUllReferenceException was unhandled by user code
Objectreferencen er ikke indstillet til forekomst af et objekt.

Og det er, når jeg prøver at udskrive de enkelte værdier i tabellen. Databasen ligger, hvor der er angivet i connectionsstringen. Og tabelnavnet er også det samme, som det angivne. Derfor undrer det mig...
Avatar billede snepnet Nybegynder
18. marts 2006 - 10:03 #3
hvilken linie fejler den på siger du?
du kan jo altid debugge igennem - og du kan også inspicere dataset'et i den forbindelse (markér variablen myDataSet og tryk shift+f9 hvis du bruger vs)
mvh
Avatar billede kkaen Nybegynder
20. marts 2006 - 08:49 #4
Nu har jeg fået det til at virke. Men jeg er kommet i tanke om, at jeg da egentlig har gjort det helt forkert. For jeg arbejder jo i VS2005, og der er det jo netop meningen, at man ikke skal hardcode så meget. Og dette burde være til at implementere uden alt den hardcoding. Så jeg ser lige på, hvordan det skal gøres :-)
Avatar billede snepnet Nybegynder
20. marts 2006 - 10:45 #5
well... det er rigtigt at du har lidt flere deklarative muligheder med asp.net 2.0, hvilket vs kan hjælpe dig med.
hvis du åbner din database via din server explorer:

ctrl+alt+s for at åbne server explorer
opret database forbindelse til din database
træk en tabel fra databasen ind på en form

mvh
Avatar billede kkaen Nybegynder
20. marts 2006 - 11:07 #6
Det er vel det samme som en SELECT. Men kan man så også sætte kriterier på, når man trækker en tabel ind?
Avatar billede snepnet Nybegynder
20. marts 2006 - 11:17 #7
ja selvfølgelig.... pointen i det vs laver ud fra ovenstående er at det er kodefrit, og baserer sig på en kontroltype der er ny i asp.net 2.0
mvh
Avatar billede kkaen Nybegynder
30. december 2010 - 16:28 #8
lukkes
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