问题描述
这个是我要运行的方法publicstaticvoidAddProducts(Productsgen){stringsql="insertProducts(ProductsId,name,picture,picturetwo,Content)"+"values(@ProductsId,@name,@picture,@picturetwo,@Content)";SqlParameter[]para=newSqlParameter[]{newSqlParameter("@ProductsId",gen.ProductsId),newSqlParameter("@name",gen.Name),newSqlParameter("@picture",gen.Picture),newSqlParameter("@picturetwo",gen.Picturetwo),newSqlParameter("@Content",gen.Content)};DBHelper.ExecuteCommand(sql,para);}这是运行页面出现的错误“/Generator”应用程序中的服务器错误。--------------------------------------------------------------------------------找不到存储过程'insertProducts(ProductsId,name,picture,picturetwo,Content)values(@ProductsId,@name,@picture,@picturetwo,@Content)'。说明:执行当前Web请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息:System.Data.SqlClient.SqlException:找不到存储过程'insertProducts(ProductsId,name,picture,picturetwo,Content)values(@ProductsId,@name,@picture,@picturetwo,@Content)'。源错误:行49:cmd.CommandType=CommandType.StoredProcedure;行50:cmd.Parameters.AddRange(values);行51:returncmd.ExecuteNonQuery();行52:}行53:源文件:H:GeneratorGeneratorDALDBHelper.cs行:51麻烦你们帮我解决下本人新手
解决方案
解决方案二:
你这是SQL怎么搭上存储过程了?stringsql="insertProducts(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,值);在执行插入操作
解决方案三:
stringsql="insertProducts(ProductsId,[name],picture,picturetwo,[Content])"+"values(@ProductsId,@name,@picture,@picturetwo,@Content)";nameContent关键字。试试。
解决方案四:
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
.
解决方案九:
publicstaticintExecuteCommand(stringsql,paramsSqlParameter[]values){SqlCommandcmd=newSqlCommand(sql,Connection);cmd.CommandType=CommandType.StoredProcedure;cmd.Parameters.AddRange(values);returncmd.ExecuteNonQuery();}这个方法是这样的现在该怎么改
解决方案十:
publicstaticintExecuteCommand(stringsql,paramsSqlParameter[]values){SqlCommandcmd=newSqlCommand(sql,Connection);cmd.CommandType=CommandType.Text;cmd.Parameters.AddRange(values);returncmd.ExecuteNonQuery();}
解决方案十一:
假如我想这么些CommandType.StoredProcedure;那个添加方法该如何写我记得以前做项目就是这么写的但是忘记数据访问层的方法该如何写了
解决方案十二:
一般我们可以把CommandType也作为一个参数publicstaticintExecuteCommand(stringsql,paramsSqlParameter[]values,CommandTypecmdType){SqlCommandcmd=newSqlCommand(sql,Connection);cmd.CommandType=cmdType;cmd.Parameters.AddRange(values);returncmd.ExecuteNonQuery();}
解决方案十三:
恩我是想问加入用存储过程该怎么弄呢你们教我的是写SQL语句吧
解决方案十四:
引用12楼woaibing1413ooo的回复:
恩我是想问加入用存储过程该怎么弄呢你们教我的是写SQL语句吧
例子setANSI_NULLSONsetQUOTED_IDENTIFIERONGOALTERproc[dbo].[InsertUsers](@UserNamevarchar(255),@Passwordvarchar(255),@UserIDintoutput)asinsertintoUsers(UserName,Password)values(@UserName,@Password)set@UserID=@@Identity
调用using(SqlConnectionconn=newSqlConnection()){conn.ConnectionString=ConfigurationManager.ConnectionStrings["Connection"].ConnectionString;conn.Open();SqlCommandcmd=newSqlCommand("[InsertUsers]",conn);cmd.CommandType=CommandType.StoredProcedure;cmd.Parameters.Add(newSqlParameter("@UserName",TextBox1.Text));cmd.Parameters.Add(newSqlParameter("@Password",TextBox2.Text));cmd.Parameters.Add(newSqlParameter("@UserID",0)).Direction=ParameterDirection.Output;intresult=cmd.ExecuteNonQuery();Response.Write(result+"UserID:"+cmd.Parameters["@UserID"].Value);}
解决方案十五:
ExecuteCommand(sql,params,CommandType.StoredProcedure)//存储过程,需要在SQLserver里存在ExecuteCommand(sql,params,CommandType.Text)//一般的SQL语句