当前位置:编程学习 > C#/ASP.NET >>

麻烦帮我解决下 找不到存储过程

  这个是我要运行的方法
     public static void AddProducts(Products gen)
        {
            string sql = "insert Products(ProductsId,name,picture,picturetwo,Content)" + "values(@ProductsId,@name ,@picture ,@picturetwo,@Content)";

                SqlParameter[] para = new SqlParameter[]
           {
          new SqlParameter("@ProductsId",gen.ProductsId),
            new SqlParameter("@name",gen.Name),
               new SqlParameter("@picture",gen.Picture),
                  new SqlParameter("@picturetwo",gen.Picturetwo),
                   new SqlParameter("@Content",gen.Content)
           };

                DBHelper.ExecuteCommand(sql, para);

             
   }      

这是运行页面出现的错误 




“/Generator”应用程序中的服务器错误。
--------------------------------------------------------------------------------

找不到存储过程 'insert Products(ProductsId,name,picture,picturetwo,Content)values(@ProductsId,@name ,@picture ,@picturetwo,@Content)'。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.Data.SqlClient.SqlException: 找不到存储过程 'insert Products(ProductsId,name,picture,picturetwo,Content)values(@ProductsId,@name ,@picture ,@picturetwo,@Content)'。

源错误: 


行 49:             cmd.CommandType = CommandType.StoredProcedure;
行 50:             cmd.Parameters.AddRange(values);
行 51:             return cmd.ExecuteNonQuery();
行 52:         }
行 53: 
 

源文件: H:\Generator\GeneratorDAL\DBHelper.cs    行: 51 


麻烦你们帮我解决下  本人新手 --------------------编程问答-------------------- 你这是SQL怎么搭上存储过程了?
string sql = "insert Products(ProductsId,name,picture,picturetwo,Content)" + "values(?,? ,?,?,?)";
用占位符来做
设置参数的值就用
cmd.Parameters.Add(1,值);
cmd.Parameters.Add(2,值);
cmd.Parameters.Add(3,值);
cmd.Parameters.Add(4,值);
cmd.Parameters.Add(5,值);
在执行插入操作 --------------------编程问答-------------------- string sql = "insert Products(ProductsId,[name],picture,picturetwo,[Content])" + "values(@ProductsId,@name ,@picture ,@picturetwo,@Content)";


name  Content 关键字 。
试试 。 --------------------编程问答--------------------
 DBHelper.ExecuteCommand(sql, para);

应该你调用的这个方法调错了。。

这个方法应该是用存储过程的 --------------------编程问答-------------------- 方法没错 普通执行SQL的方法是可以执行存储过程的
只要指定command.CommandType=CommandType.StoredProcedure就可以执行存储过程了 --------------------编程问答-------------------- 看这个方法里ExecuteCommand的CommandType是不是StoredProcedure

你执行的是SQL 应该是CommandType.Text --------------------编程问答-------------------- CommandType.Text

要设置一下执行的类型 --------------------编程问答--------------------
引用 5 楼 wxr0323 的回复:
看这个方法里ExecuteCommand的CommandType是不是StoredProcedure

你执行的是SQL 应该是CommandType.Text
. --------------------编程问答--------------------         public static int ExecuteCommand(string sql, params SqlParameter[] values)
        {
            SqlCommand cmd = new SqlCommand(sql, Connection);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddRange(values);
            return cmd.ExecuteNonQuery();
        }   

这个方法是这样的   现在该怎么改 --------------------编程问答-------------------- public static int ExecuteCommand(string sql, params SqlParameter[] values)
  {
  SqlCommand cmd = new SqlCommand(sql, Connection);
  cmd.CommandType = CommandType.Text;
  cmd.Parameters.AddRange(values);
  return cmd.ExecuteNonQuery();
  }   
--------------------编程问答-------------------- 假如我想这么些CommandType.StoredProcedure;
  那个添加方法该如何写  我记得以前做项目就是  这么写的  但是忘记数据访问层的方法该如何写了 --------------------编程问答-------------------- 一般我们可以把CommandType也作为一个参数

public static int ExecuteCommand(string sql, params SqlParameter[] values,CommandType cmdType)
  {
  SqlCommand cmd = new SqlCommand(sql, Connection);
  cmd.CommandType = cmdType;
  cmd.Parameters.AddRange(values);
  return cmd.ExecuteNonQuery();
  }   
--------------------编程问答-------------------- 恩  我是想问加入用存储过程  该怎么弄呢     你们教我的是写SQL语句吧  --------------------编程问答--------------------
引用 12 楼 woaibing1413ooo 的回复:
恩  我是想问加入用存储过程  该怎么弄呢     你们教我的是写SQL语句吧

例子

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[InsertUsers]
(
    @UserName varchar(255),@Password varchar(255),@UserID int output
)
as
insert into Users(UserName,Password)values(@UserName,@Password)
set @UserID=@@Identity


调用
 using (SqlConnection conn = new SqlConnection())
        {
            conn.ConnectionString = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString;
            conn.Open();
            SqlCommand cmd = new SqlCommand("[InsertUsers]", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new SqlParameter("@UserName", TextBox1.Text));
            cmd.Parameters.Add(new SqlParameter("@Password", TextBox2.Text));
            cmd.Parameters.Add(new SqlParameter("@UserID", 0)).Direction = ParameterDirection.Output;
            int result = cmd.ExecuteNonQuery();
            Response.Write(result + " UserID:" + cmd.Parameters["@UserID"].Value);
        }
--------------------编程问答-------------------- ExecuteCommand(sql,params,CommandType.StoredProcedure)//存储过程,需要在SQL server里存在
ExecuteCommand(sql,params,CommandType.Text)//一般的SQL语句
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,