29. november 2002 - 12:53
Der er
15 kommentarer og 1 løsning
Kald af stored procedure?
Hvordan kalder man en stored procedure fra en method? /* Min Web.config */ <appSettings> <add key="ConnStr" value="Data Source = localhost; Initial Catalog = myDB; User ID = sa; Password = ; Trusted_Connection = sspi" /> </appSettings> /* Min method */ private string ConnStr = System.Configuration.ConfigurationSettings.AppSettings["ConnStr"]; public static StringCollection getTexts(int Language, string PageName) { SqlCommand PageTextCmd = new SqlCommand("ViewPageTexts", ConnStr); PageTextCmd.CommandType = CommandType.StoredProcedure; PageTextCmd.Parameters.Add("@Language", SqlDbType.Int).Value = Language; PageTextCmd.Parameters.Add("@PageName", SqlDbType.Char).Value = PageName; ConnStr.Open(); ConnStr.Close(); StringCollection result = new StringCollection(); return result; }
Annonceindlæg fra Trustworks
Tillid i en Zero-Trust verden
Med voksende trusler, nye EU-krav og øget kompleksitet er cybersikkerhed nu en central ledelsesopgave på linje med strategi og økonomi.
29. november 2002 - 13:03
#1
Hvis du ikke skal have et resultat sæt tilbage så PageTextCmd.ExecuteNonQuery() Ellers SqlDataReader reader = PageTextCmd.ExecuteReader()
29. november 2002 - 13:04
#2
Du mangler at execute din stored procedure. Det gøres enter ved en PageTextCmd.ExecuteReader el.lign. resultatet af denne gives til en datareader SqlDataReader dr = PageTextCmd.ExecuteReader(); While(dr.read());
29. november 2002 - 13:06
#3
UPs - de enkelte felt i resultatet kan du så give til en StringCollection eller andet. Lars
29. november 2002 - 13:22
#4
Men jeg får en fejl i denne linie hver gang jeg prøver at builde.... SqlCommand PageTextCmd = new SqlCommand("ViewPageTexts", ConnStr);
29. november 2002 - 13:29
#5
Hvilken build fejl får du?
29. november 2002 - 14:08
#6
The best overloaded method match for 'System.Data.SqlClient.SqlCommand.SqlCommand(string, System.Data.Sql.Client.SqlConnection)' has some invalide arguments
29. november 2002 - 14:21
#7
For at angive en SP skal du have [] rundt om strengen - SqlCommand PageTextCmd = new SqlCommand("[ViewPageTexts]", ConnStr); Lars
29. november 2002 - 14:35
#8
Hmm jeg får den samme fejl besked?
29. november 2002 - 14:37
#9
Min SP... CREATE PROCEDURE ViewPageTexts ( @Language INT, @PageName CHAR ) AS SELECT [dbo].[PageText].[Field], [dbo].[PageText].[Text] FROM [dbo].[PageText] WHERE PageName = @PageName AND Language = @Language AND Status = 1 GO
29. november 2002 - 17:08
#10
Det har intet med din stored procedure at gøre. Hvis du læser dokumentationen for SqlCommand, så er der ingen constructor der tager to strenge som argumenter, men derimod en der tager en streng og en SqlConnection. Det du skal gøre er.... SqlConnection connection = new SqlConnection(dinConnnectionStrengHer); SqlCommand command = new SqlCommand("ViewPageTexts", connection);
29. november 2002 - 18:03
#11
/* Du har ganske ret, jeg glemte at instatiere min connection string som en SqlConnection Her er hvad jeg har gjort.... */ private static string ConnStr = System.Configuration.ConfigurationSettings.AppSettings["ConnStr"]; public static DataSet getTexts(int Language, string PageName) { SqlConnection Conn = new SqlConnection(ConnStr); DataSet ds = new DataSet(); SqlCommand PageTextCmd = new SqlCommand("[getPageTexts]", Conn); PageTextCmd.CommandType = CommandType.StoredProcedure; PageTextCmd.Parameters.Add("@Language", SqlDbType.Int).Value = Language; PageTextCmd.Parameters.Add("@PageName", SqlDbType.Char).Value = PageName; Conn.Open(); SqlDataAdapter da = new SqlDataAdapter(PageTextCmd); Conn.Close(); return ds; } /* Tak for hjælpen! Kan du eventuelt guide mig i en ordenlig exception håndtering i ovenstående? (Jeg er stadig grøn! :) */
29. november 2002 - 18:05
#12
Forresten points til dig 'z42cool' ! Tak!
30. november 2002 - 13:01
#13
Jeg smider normalt en Try Catch udenom open delen. Jeg bruger Finally til at smide Command objektet (cmd.Dispose) væk og lukke forbindelsen igen.
30. november 2002 - 13:19
#14
/* Jeg havde forstillt mig.... */ private static string ConnStr = System.Configuration.ConfigurationSettings.AppSettings["ConnStr"]; public static DataSet getTexts(int Language, string PageName) { try { SqlConnection Conn = new SqlConnection(ConnStr); DataSet ds = new DataSet(); SqlCommand PageTextCmd = new SqlCommand("[getPageTexts]", Conn); PageTextCmd.CommandType = CommandType.StoredProcedure; PageTextCmd.Parameters.Add("@Language", SqlDbType.Int).Value = Language; PageTextCmd.Parameters.Add("@PageName", SqlDbType.Char).Value = PageName; Conn.Open(); SqlDataAdapter da = new SqlDataAdapter(PageTextCmd); } catch (Exception e) { // do something string exceptionCaught = e.ToString(); } Finally { PageTextCmd.Dispose(); Conn.Close(); } return ds; } /* Men er ikke helt sikker??? */
30. november 2002 - 20:57
#15
Præcist. Jeg bruger dog normalt en Trace.Write i catch-delen. Enten det eller smider jeg fejlen ned i database, det gør det nemmere at konstere fejl.
02. december 2002 - 10:13
#16
Tjo... Min ide var sådan set at vise brugeren er venlig fejlside, smide fejlen i db, og en sende mig en email. Tak for hjælpen!
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.