02. marts 2006 - 16:20Der er
24 kommentarer og 1 løsning
Fejlmeddelelse i vs 2005
Hej Jeg får følgende fejl når jeg forsøger at køre min kode. Fejlen kommer når jeg forsøger at skabe kontakten til min sql database. Jeg benytter vs 2005.
Når fejlen kommer makere den koden markeret med *** i følgende kode. SqlConnection sqlConnection1 = new SqlConnection(); *** sqlConnection1.ConnectionString = "Data Source=FLEMSE;Initial Catalog=Tourhelp;Integrated Security=True";
Fejlen der kommer siger følgende A first chance exception of type 'System.TypeInitializationException' occurred in System.Data.dll
Mit program hedder design.exe og hvis jeg så er kommet til at oprette en xml fil der hedder design.exe.config vil den så altid hente de informationer der står i denne fil?
hvordan laver jeg en try catch på min database således at den skriver at databasen ikke kan findes hvis der ikke kan oprettets kontakt?
min kode ser således ud ----kode start public DataSet butikDataSet1() { //kontakt databasen og hent det relevante data try { sqlConnection1 = new SqlConnection(); sqlConnection1.ConnectionString = "Data Source=FLEMSE;Initial Catalog=Tourhelp;Integrated Security=True"; sqlConnection1.Open(); }
catch(Exception xp) { //MessageBox.Show(xp.Message); } SqlCommand myCommand = new SqlCommand(); myCommand.CommandText = "SELECT * FROM butikker"; myCommand.CommandType = CommandType.Text; butikDataSet = new DataSet();
sqlDataAdapter1 = new SqlDataAdapter(); sqlDataAdapter1.SelectCommand = myCommand; sqlDataAdapter1.SelectCommand.Connection = new SqlConnection(); sqlDataAdapter1.SelectCommand.Connection.ConnectionString = "workstation id=FLEMSE;packet size=4096;integrated security=SSPI;data source=FLEMSE;persist security info=False;initial catalog=Tourhelp"; sqlDataAdapter1.Fill(butikDataSet); sqlDataAdapter1.TableMappings.AddRange(new System.Data.Common.DataTableMapping[] { new System.Data.Common.DataTableMapping("Table", "butikker", new System.Data.Common.DataColumnMapping[] { new System.Data.Common.DataColumnMapping("ButikId", "ButikId"), new System.Data.Common.DataColumnMapping("Navn", "Navn"), new System.Data.Common.DataColumnMapping("Adresse", "Adresse"), new System.Data.Common.DataColumnMapping("By", "By"), new System.Data.Common.DataColumnMapping("Postnummer", "Postnummer"), new System.Data.Common.DataColumnMapping("Telefon", "Telefon"), new System.Data.Common.DataColumnMapping("Beskrivelse", "Beskrivelse")})});
// sqlDataAdapter1.SelectCommand.CommandText(SELECT navn) FROM butikker);
//til sidste returneres et dataset. return butikData.butikDataSet; } ----- kode slut -----
Alt kode der er skrevet inde i try blokken køres, og hvis der sker en fejl eksekveres catch blokken. Hvis der ikke havde været en try catch lukker programmet bare. Ved at skrive catch(Exception ex) og så udskrive den i blokken "fanges" fejlmeddelelsen.
Du bliver nød til at pakke hele koden ind i try ellers fejler giver koden udenfor try blokken en fejl. Den fejl der opstår bliver udskrevet i msg boksen:
public DataSet butikDataSet1() { //kontakt databasen og hent det relevante data try { sqlConnection1 = new SqlConnection(); sqlConnection1.ConnectionString = "Data Source=FLEMSE;Initial Catalog=Tourhelp;Integrated Security=True"; sqlConnection1.Open();
SqlCommand myCommand = new SqlCommand(); myCommand.CommandText = "SELECT * FROM butikker"; myCommand.CommandType = CommandType.Text; butikDataSet = new DataSet();
sqlDataAdapter1 = new SqlDataAdapter(); sqlDataAdapter1.SelectCommand = myCommand; sqlDataAdapter1.SelectCommand.Connection = new SqlConnection(); sqlDataAdapter1.SelectCommand.Connection.ConnectionString = "workstation id=FLEMSE;packet size=4096;integrated security=SSPI;data source=FLEMSE;persist security info=False;initial catalog=Tourhelp"; sqlDataAdapter1.Fill(butikDataSet); sqlDataAdapter1.TableMappings.AddRange(new System.Data.Common.DataTableMapping[] { new System.Data.Common.DataTableMapping("Table", "butikker", new System.Data.Common.DataColumnMapping[] { new System.Data.Common.DataColumnMapping("ButikId", "ButikId"), new System.Data.Common.DataColumnMapping("Navn", "Navn"), new System.Data.Common.DataColumnMapping("Adresse", "Adresse"), new System.Data.Common.DataColumnMapping("By", "By"), new System.Data.Common.DataColumnMapping("Postnummer", "Postnummer"), new System.Data.Common.DataColumnMapping("Telefon", "Telefon"), new System.Data.Common.DataColumnMapping("Beskrivelse", "Beskrivelse")})});
// sqlDataAdapter1.SelectCommand.CommandText(SELECT navn) FROM butikker);
//til sidste returneres et dataset. return butikData.butikDataSet; }
Error 8 'butikData.butikDataSet1()': not all code paths return a value C:\Documents and Settings\Flemming\My Documents\Visual Studio 2005\Projects\design\butikData.cs 19 20 design
Hmm. Jeg har før haft problemer med databaser fordi feltet "By" kan konflikte med "Order By" Prøv engang at omdøbe feltet i By i databasen, og i koden. Det kan måske være derfor.
Hej her er min fejlbesked i messageboxen An error has occurred while establishing a connection to the server. When connectiong to SQL Server 2005, this failure may be causeed by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open at connection to SQL Server)
Den returnere desuden en (ArgumentException was unhandled) ved denne kode ----- kode ---- private void btnButik_Click(object sender, System.EventArgs e) { butikData bd = new butikData(); string member; member = "Table"; dataGridData.SetDataBinding(bd.butikDataSet1(), member); *** } ---- kode ----
stedet markeret med *** angiver det sted hvor compileren henviser til fejlen og linien er markeret med gult i koden.
jeg tror at problemet er at jeg benytter Table som member og den ikke er oprettet i min catch funktion. ved du hvordan jeg løser dette problem??
Den primære fejl er at den ikke kan åbne database: "Could not open at connection to SQL Server". Den anden fejl opstår fordi catch returnerer et tomt dataset. Den eneste grund til at dne returnerer det tomme dataset er at ellers vil den ikke compile fordi der ikke returneres noget i catch. Har du prøvet at kigge på linket jeg skrev tidligere. Prøv eventuelt at rode lidt med din connection string ud fra de eksempler der bliver vist.
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.