15. marts 2006 - 11:11Der 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);
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..
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...
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
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 :-)
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
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.