2016-10-11 1 views
1

Ich versuche, eine Simpe-App mit ASP zu machen, und ich habe ein Problem.Prozedur oder Funktion 'stored_pr' erwartet Parameter '@name', der nicht geliefert wurde

Prozedur oder Funktion 'stored_pr' erwartet Parameter '@name', der nicht geliefert wurde.

Meine Stored Procedure:

ALTER proc [dbo].[spq] 
@name nvarchar(max) 
as 
insert into tableq (name) 
Values 
(@name) 
GO 

Mein Code in ASP:

using System; 
using System.Data; 
using System.Configuration; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 
using System.Data.SqlClient; 
public partial class _Default : System.Web.UI.Page 
{ 
    DataSet ds = new DataSet(); 
    SqlConnection con; 
    //Here we declare the parameter which we have to use in our application 
    SqlCommand cmd = new SqlCommand(); 
    SqlParameter @name = new SqlParameter(); 


    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 

    protected void Button1_Click(object sender, EventArgs e) 

    { 
     con = new SqlConnection("server=(local); database=**;uid=DefaultAppPool;pwd=*****"); 
     cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = ((TextBox)this.Page.FindControl("Pole")).Text; 

     cmd = new SqlCommand("spq", con); 
     cmd.CommandType = CommandType.StoredProcedure; 
     con.Open(); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
    } 
} 

und

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 

</head> 
<body> 
<form id="form1" runat="server"> 
<div> 

<asp:TextBox ID="Pole" runat="server"></asp:TextBox> 


<asp:Button ID="Button1" runat="server" Text="Submit Record" OnClick="Button1_Click" /> 
</div> 
</form> 
</body> 
</html> 

Bitte jede Hilfe .. danke

+0

Da die Parameter des Typs 'nvarchar' ist, müssen Sie möglicherweise SqlDbType.NVarChar' richtig Wert es ist einzustellen. –

Antwort

1

Ihr Problem mehr als wahrscheinlich, liegt in diesen zwei Linien, obwohl es andere Probleme im Code sein:

cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = ((TextBox)this.Page.FindControl("Pole")).Text; 

cmd = new SqlCommand("spq", con); 

Du fügst im Grunde um einen Parameter zu dem Befehl und dann effektiv löschen, indem man es neu aufbaut. Tausche die 2 Linien um und du solltest diesen Fehler überwinden.

einen Blick auf die Dokumentation für eine Probe nehmen:

MSDN: SqlCommand.Parameters Property

1

Fehler! Tauschen Sie diese beiden Zeilen:

cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = ((TextBox)this.Page.FindControl("Pole")).Text; 

    cmd = new SqlCommand("spq", con); 
+0

vielen dank !!! – taty

Verwandte Themen