Thread: Invalid operation (C#)
-
08-05-2010, 12:36 #1Member
- Registered
- 03/11/04
- Location
- Oostduinkerke
- Posts
- 5,173
- iTrader
- 3 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/42
Invalid operation (C#)
Hallo
Ik werk in de ASP.net omgeving en probeer via C# te zoeken in ee MSSQL database. Telkens ik dit probeer krijg ik een "System.InvalidOperationException"-exceptie. Ik krijg dezelfde exceptie bij elke zoekopdracht, daarom post ik maar de code van 1 ervan.
Code voor het openen van de connectie:
Code voor de zoek functie:Code:SqlConnection myConnection = new SqlConnection("user id=xxx;" + "password=xxx;server=xxx;" + "Trusted_Connection=yes;" + "database=xxx; " + "connection timeout=30"); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { try { myConnection.Open(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
Ik heb ongeveer dezelfde stukken code voor elke kolom (wel enkele met 'LIKE').Code:protected void Zoek_IMDB_Click(object sender, EventArgs e) { //[IMDB] = @IMDB try { SqlDataReader lezer = null; SqlCommand zoekopdracht = new SqlCommand("SELECT * FROM [DVD_collectie] WHERE [IMDB] = " + IMDB_zoeken.Text, myConnection); lezer = zoekopdracht.ExecuteReader(); while (lezer.Read()) { tekstbox.Text += (lezer["Titel"].ToString()); tekstbox.Text += Environment.NewLine; tekstbox.Text += (lezer["Jaar"].ToString()); tekstbox.Text += Environment.NewLine; tekstbox.Text += (lezer["Genre"].ToString()); tekstbox.Text += Environment.NewLine; tekstbox.Text += (lezer["IMDB"].ToString()); tekstbox.Text += Environment.NewLine; } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
Mijn andere kolommen zijn Titel, Genre en jaar.
Dank bij voorbaatno votes
-
-
08-05-2010, 15:58 #2
Is er geen innerException? Die geeft meestal wat meer informatie. Is het ook niet raar dat je de connectie al open doet in de pageload?
no votes
-
08-05-2010, 17:06 #3no votes
-
11-05-2010, 19:45 #4Member
- Registered
- 08/11/03
- Location
- Antwerpen
- Posts
- 1,726
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 2/2
Een InvalidOperationException krijg je wanneer je een operatie op een object uitvoert, maar het object niet in de juiste state is om de operatie te kunnen uitvoeren (bijv niet alle nodige gegevens zijn opgegeven). In uw geval zal het zijn omdat de connectie naar je database niet open is.
Je opent momenteel je connectie in je page load, enkel als het geen postback is (wat een vieze code trouwens). Maar je wil gebruik maken van de connectie wanneer je op de zoek-knop clickt, wat natuurlijk een postback triggered en er dus voor zorgt dat je connectie niet geopend wordt.
Wat je kan doen om je code op te kuisen:
- steek de code om je database te queryen in een aparte class (data access class).
- gebruik using statements om IDisposable objects (je connection) te disposen wanneer je ze niet meer nodig hebt.
- Console.WriteLine in een webapp?no votes
-
12-05-2010, 13:17 #5Member
- Registered
- 03/11/04
- Location
- Oostduinkerke
- Posts
- 5,173
- iTrader
- 3 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/42
Bedankt voor uw uitleg.

Die Console.WriteLine is enkel om de website lokaal te testen hoor.no votes

