我的asp代码存储过程有问题吗? [英] i have problem in my asp code with stored procedures?

查看:71
本文介绍了我的asp代码存储过程有问题吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有问题我为我的表制作存储过程我希望从我的页面添加项目



i have problem i make stored procedures for my table i want add items form my page

ALTER PROCEDURE [dbo].[AddProduct] (
      @Title nvarchar(255) , @Description nvarchar(max) ,@Price Decimal(12,3),
	  @Quantity int ,@Status int ,
	  @CreateDate datetime )
	
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	insert into Products select @Title,@Description,@Price,@Quantity,@Status,@CreateDate

	
END





当我运行我的页面时我有错误告诉我@title预计

我的代码



put when i run my page i have error tell me @title expected
my code

public class Products
{
	//filed & property 
    private SqlConnection conn;
    public int ProductID { get; set; }
    public string Title { get; set; }
    public string PDescription { get; set; }
    public decimal Price { get; set; }
    public int Quantity { get; set; }
    public int PStatus { get; set; }
    public DateTime CreateDate { get; set; }


    // construcor 
    public Products() { }



    // method 

    public void GetConnection()
    {
        conn = new SqlConnection(DBCONN.constr);
        try
        {
            conn.Open();

        }
        catch { }

    }


    public void Add() 
    {
        GetConnection();

        SqlCommand  cmd= new SqlCommand();
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "AddProduct";
        cmd.Connection = conn;

        SqlParameter p1 = new SqlParameter();
        p1.ParameterName = "@Title";
        p1.Value = Title;

        SqlParameter p2 = new SqlParameter();
        p1.ParameterName = "@Description";
        p1.Value = PDescription;

        SqlParameter p3 = new SqlParameter();
        p1.ParameterName = "@Price";
        p1.Value = Price;

        SqlParameter p4 = new SqlParameter();
        p1.ParameterName = "@Quantity";
        p1.Value = Quantity;

        SqlParameter p5 = new SqlParameter();
        p1.ParameterName = "@Status";
        p1.Value = PStatus;

        SqlParameter p6 = new SqlParameter();
        p1.ParameterName = "@CreateDate";
        p1.Value = CreateDate;

        
        

        cmd.Parameters.Add(p1);
        cmd.Parameters.Add(p2);
        cmd.Parameters.Add(p3);
        cmd.Parameters.Add(p4);
        cmd.Parameters.Add(p5);
        cmd.Parameters.Add(p6);

        
         cmd.ExecuteNonQuery(); 
       

        conn.Close(); 
    
        
    }



}







可以帮助我?




can help me?

推荐答案

更改此

change this
insert into Products select @Title,@Description,@Price,@Quantity,@Status,@CreateDate



到此


to this

insert into Products values(@Title,@Description,@Price,@Quantity,@Status,@CreateDate)


你好我认为你有将Add()方法更改为... as



public void Add()

{

GetConnection();



SqlCommand cmd = new SqlCommand();

cmd.CommandType = CommandType.StoredProcedure;

cmd.CommandText =AddProduct;

cmd.Connection = conn;



SqlParameter p1 = new SqlParameter();

p1.ParameterName =@Title;

p1.Value = Title;



SqlParameter p2 = new SqlParameter();

p2.ParameterName =@ Description;

p2.Value = PDescription;



SqlParameter p3 = new SqlParameter();

p3.ParameterName =@ Price;

p3.Value =价格;



SqlParameter p4 =新的SqlParameter();

p4.ParameterName =@Quantity;

p4.Value =数量;



SqlParameter p5 = new SqlParameter();

p5.ParameterName =@Status;

p5.Value = PStatus;



SqlParameter p6 = new SqlParameter();

p6.ParameterName = @CreateDate;

p6.Value = CreateDate;









cmd.Parameters.Add(p1);

cmd.Parameters.Add(p2);

cmd.Parameters.Add(p3) ;

cmd.Parameters.Add(p4);

cmd.Parameters.Add(p5);

cmd.Parameters.Add(p6);





cmd.ExecuteNonQuery();





conn.Close();





}





please如果有帮助你回复
Hello i think you have to change your Add() method to ... as

public void Add()
{
GetConnection();

SqlCommand cmd= new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "AddProduct";
cmd.Connection = conn;

SqlParameter p1 = new SqlParameter();
p1.ParameterName = "@Title";
p1.Value = Title;

SqlParameter p2 = new SqlParameter();
p2.ParameterName = "@Description";
p2.Value = PDescription;

SqlParameter p3 = new SqlParameter();
p3.ParameterName = "@Price";
p3.Value = Price;

SqlParameter p4 = new SqlParameter();
p4.ParameterName = "@Quantity";
p4.Value = Quantity;

SqlParameter p5 = new SqlParameter();
p5.ParameterName = "@Status";
p5.Value = PStatus;

SqlParameter p6 = new SqlParameter();
p6.ParameterName = "@CreateDate";
p6.Value = CreateDate;




cmd.Parameters.Add(p1);
cmd.Parameters.Add(p2);
cmd.Parameters.Add(p3);
cmd.Parameters.Add(p4);
cmd.Parameters.Add(p5);
cmd.Parameters.Add(p6);


cmd.ExecuteNonQuery();


conn.Close();


}


please reply if it helps you


p1.Value = Title;//null



您将空值传递给Title,在调用存储过程之前验证它



建议:


You are passing null value to the Title, validate it before calling the Stored Procedure

Suggestion:

p1.Value = string.IsNullOrEmpty(Title) ? "Default Title" : Title;


这篇关于我的asp代码存储过程有问题吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆