麻烦帮我解决下 找不到存储过程
这个是我要运行的方法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
要设置一下执行的类型 --------------------编程问答-------------------- . --------------------编程问答-------------------- 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语句吧 --------------------编程问答--------------------
例子
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())--------------------编程问答-------------------- ExecuteCommand(sql,params,CommandType.StoredProcedure)//存储过程,需要在SQL server里存在
{
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.Text)//一般的SQL语句
补充:.NET技术 , ASP.NET