ASP.NET, C#, MSSQL Stored procedure MissingMethodException
Jeg har en form på en aspx-side hvor jeg indtaster oplysninger om en kunde. Af data skaber jeg et objekt, som jeg vil skrive til MSSQL-database vha. en stored procedure. Jeg bruger C#.Jeg kan læse data fra databasen og vise det i browseren, så serveren kører.
Jeg kan også skabe objektet, og vise attributterne i browseren, så get/set-metoder virker.
***********Fejlmeddelelse******************
Opret kundeSystem.MissingMethodException: Method not found: Void System.Threading.WaitCallback..ctor(System.Object, UIntPtr). at System.Data.SqlClient.SqlConnection.Open() at intraNET.Kunde.skriv() at ASP.opretkunde_aspx.gemKunde(Object sender, EventArgs e) in C:\www\dotnet\opretkunde.aspx:line 18
Her er min aspx-side og min kundeklasse:
*********opretkunde.aspx****************
<%@ Page language="C#" Debug="true"%>
<%@ Import namespace="intraNET" %>
<%@ Import namespace="System" %>
<%@ Import namespace="System.Web" %>
<%@ Import namespace="System.Web.UI" %>
<%@ Import namespace="System.Web.UI.WebControls" %>
<script language="C#" runat="server">
public void gemKunde(Object sender, EventArgs e) {
if (Page.IsValid) {
Kunde kunde = new Kunde();
kunde.Navn = txtNavn.Text;
kunde.Adresse = txtAdresse.Text;
kunde.Postnr = txtPostnr.Text;
kunde.Telefon = txtTelefon.Text;
kunde.Email = txtEmail.Text;
try {
kunde.skriv();
}
catch (Exception e1) {
lblError.Text = e1.ToString();
}
}
}
</script>
<html>
<head>
<title>ASP.NET eksperimenter</title>
<!--#include file="style.css"-->
</head>
<body>
<form action="opretkunde.aspx" method="post" runat="server">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td colspan="5" class="overskrift">Opret kunde<asp:label id="lblError" text="" runat="server" /></td>
</tr>
<tr>
<td></td><td> </td><td></td><td> </td><td></td>
</tr>
<tr>
<td>Navn:</td><td> </td><td><asp:textbox id="txtNavn" runat="server"/> *</td><td> </td><td><asp:RequiredFieldValidator id="valNavnRequired" runat="server" ControlToValidate="txtNavn" ErrorMessage="Du skal udfylde navn!" Display="dynamic"/></td>
</tr>
<tr>
<td>Adresse:</td><td> </td><td><asp:textbox id="txtAdresse" runat="server"/></td><td> </td><td></td>
</tr>
<tr>
<td>Postnr.:</td><td> </td><td><asp:textbox id="txtPostnr" runat="server"/> *</td><td> </td><td><asp:RequiredFieldValidator id="valPostnrRequired" runat="server" ControlToValidate="txtPostnr" ErrorMessage="Du skal udfylde postnr!" Display="dynamic"/></td>
</tr>
<tr>
<td>Telefon:</td><td> </td><td><asp:textbox id="txtTelefon" runat="server"/></td><td> </td><td></td>
</tr>
<tr>
<td>E-mail:</td><td> </td><td><asp:textbox id="txtEmail" runat="server"/> *</td><td> </td><td><asp:RequiredFieldValidator id="valEmailRequired" runat="server" ControlToValidate="txtEmail" ErrorMessage="Du skal udfylde e-mail!" Display="dynamic"/><asp:RegularExpressionValidator id="valEmailRegEx" runat="server" ControlToValidate="txtEmail" ValidationExpression=".*@.*\..*" ErrorMessage="Den indtastede e-mail er ikke gyldig!" display="dynamic"/></td>
</tr>
<tr>
<td></td><td> </td><td></td><td> </td><td></td>
</tr>
<tr>
<td colspan="5"><asp:button id="btnGem" Text="Gem" runat="server" onClick="gemKunde"/></td>
</tr>
</table>
</form>
</body>
</html>
************kunde.cs***********
using System;
using System.Data;
using System.Data.SqlClient;
namespace intraNET {
public class Kunde {
private int id;
private string navn;
private string adresse;
private string postnr;
private string telefon;
private string email;
private SqlConnection myConnection;
public Kunde() {
this.navn = "";
this.adresse = "";
this.postnr = "";
this.telefon = "";
this.email = "";
}
public int Id {
get {
return this.id;
}
set {
this.id = value;
}
}
public string Navn {
get {
return this.navn;
}
set {
this.navn = value;
}
}
public string Adresse {
get {
return this.adresse;
}
set {
this.adresse = value;
}
}
public string Postnr {
get {
return this.postnr;
}
set {
this.postnr = value;
}
}
public string Telefon {
get {
return this.telefon;
}
set {
this.telefon = value;
}
}
public string Email {
get {
return this.email;
}
set {
this.email = value;
}
}
public void openDatabase() {
myConnection = new SqlConnection("server=127.0.0.1;database=intranet;uid=sa;pwd=;");
myConnection.Open();
}
public void closeDatabase(){
myConnection.Close();
}
public void skriv() {
this.openDatabase();
SqlCommand myCommand;
myCommand = new SqlCommand("sp_kunde_gem",myConnection);
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.Add(new SqlParameter("@navn", SqlDbType.NVarChar, 50));
myCommand.Parameters["@navn"].Value = this.Navn;
myCommand.Parameters.Add(new SqlParameter("@adresse", SqlDbType.NVarChar, 50));
myCommand.Parameters["@adresse"].Value = this.Adresse;
myCommand.Parameters.Add(new SqlParameter("@postnr", SqlDbType.NVarChar, 4));
myCommand.Parameters["@postnr"].Value = this.Postnr;
myCommand.Parameters.Add(new SqlParameter("@telefon", SqlDbType.NVarChar, 8));
myCommand.Parameters["@telefon"].Value = this.Telefon;
myCommand.Parameters.Add(new SqlParameter("@email", SqlDbType.NVarChar, 100));
myCommand.Parameters["@email"].Value = this.Email;
myCommand.ExecuteNonQuery();
this.closeDatabase();
}
}
}