问题描述
我调用了一个有参数的存储过程,代码如下Comd.CommandText="ProPageSet1"Dimparam1AsNewSqlParameter("@tb",SqlDbType.VarChar,50)param1.Direction=ParameterDirection.Inputparam1.Value="dhz"Comd.Parameters.Add(param1)Dimparam2AsNewSqlParameter("@col",SqlDbType.VarChar,50)param2.Direction=ParameterDirection.Inputparam2.Value="id"Comd.Parameters.Add(param2)Dimparam3AsNewSqlParameter("@colorder",SqlDbType.VarChar,50)param3.Direction=ParameterDirection.Inputparam3.Value="id"Comd.Parameters.Add(param3)Dimparam4AsNewSqlParameter("@collist",SqlDbType.VarChar,800)param4.Direction=ParameterDirection.Inputparam4.Value="id,s_dbrm,cast(DecryptByCert(257,s_dz)asvarchar(120)),test"Comd.Parameters.Add(param4)Dimparam5AsNewSqlParameter("@pagesize",SqlDbType.Int)param5.Direction=ParameterDirection.Inputparam5.Value=15Comd.Parameters.Add(param5)Dimparam6AsNewSqlParameter("@page",SqlDbType.Int)param6.Direction=ParameterDirection.Inputparam6.Value=1Comd.Parameters.Add(param6)Dimparam7AsNewSqlParameter("@condition",SqlDbType.VarChar,800)param7.Direction=ParameterDirection.Inputparam7.Value="id>0"Comd.Parameters.Add(param7)Dimparam8AsNewSqlParameter("@pages",SqlDbType.Int)param8.Direction=ParameterDirection.Outputparam8.Value=1Comd.Parameters.Add(param8)sdrd=Comd.ExecuteReader()报错:'ProPageSet1'附近有语法错误但这个存储过程我用如下方法调用是正常的.Comd.CommandText="ProPageSet1'dhz','id','id','id,s_dbrm,cast(DecryptByCert(257,s_dz)asvarchar(120)),test',15,1,'id>0',10"只是因为要加输出参数和参数带引号的原因才改了调用方法,结果就报错了.谢谢
解决方案
解决方案二:
publicDataSetFillDS(StringpName,SqlParameter[]paras){try{DataSetds=newDataSet();SqlConnectionconn=Conn.getConn();SqlCommandcommand=newSqlCommand(pName,conn);command.CommandType=CommandType.StoredProcedure;if(paras!=null){command.Parameters.AddRange(paras);}SqlDataAdapterad=newSqlDataAdapter(command);ad.Fill(ds);returnds;}catch(Exceptionex){ex.ToString();}returnnull;}
解决方案三:
Comd.CommandText="ProPageSet1"Comd.CommandType=CommandType.StoredProcedure;'默认是文本的,这样一设置表示"ProPageSet1"是存储过程名而不是SQL语句Dimparam1AsNewSqlParameter("@tb",SqlDbType.VarChar,50)param1.Direction=ParameterDirection.Inputparam1.Value="dhz"Comd.Parameters.Add(param1)Dimparam2AsNewSqlParameter("@col",SqlDbType.VarChar,50)param2.Direction=ParameterDirection.Inputparam2.Value="id"Comd.Parameters.Add(param2)Dimparam3AsNewSqlParameter("@colorder",SqlDbType.VarChar,50)param3.Direction=ParameterDirection.Inputparam3.Value="id"Comd.Parameters.Add(param3)Dimparam4AsNewSqlParameter("@collist",SqlDbType.VarChar,800)param4.Direction=ParameterDirection.Inputparam4.Value="id,s_dbrm,cast(DecryptByCert(257,s_dz)asvarchar(120)),test"Comd.Parameters.Add(param4)Dimparam5AsNewSqlParameter("@pagesize",SqlDbType.Int)param5.Direction=ParameterDirection.Inputparam5.Value=15Comd.Parameters.Add(param5)Dimparam6AsNewSqlParameter("@page",SqlDbType.Int)param6.Direction=ParameterDirection.Inputparam6.Value=1Comd.Parameters.Add(param6)Dimparam7AsNewSqlParameter("@condition",SqlDbType.VarChar,800)param7.Direction=ParameterDirection.Inputparam7.Value="id>0"Comd.Parameters.Add(param7)Dimparam8AsNewSqlParameter("@pages",SqlDbType.Int)param8.Direction=ParameterDirection.Outputparam8.Value=1Comd.Parameters.Add(param8)sdrd=Comd.ExecuteReader()
解决方案四:
ADO.NET是对MicrosoftActiveXDataObjects(ADO)一个跨时代的改进,它提供了平台互用性和可伸缩的数据访问。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO.NET组件,它可以是基于一个MicrosoftVisualStudio的解决方案,也可以是任何运行在其它平台上的任何应用程序。以前做数据库访问的时候,需要一直与数据库保持连接,直到获取完所有满足需要的数据之后才会断开数据库连接,这种数据库访问方式称之为连接式数据访问技术。相比于以前的连接式数据访问技术,ADO.NET除了提供连接式数据访问技术之外,还提供了另一种断开式解决方案,那就是在内存中模拟一个数据库,也就是内存中的数据库。我们知道在实际的数据库技术中,每个数据库就是一个业务逻辑单元,一般来说这个数据库包含了实现一个应用软件或者一个网站所需要的全部数据。本篇中还讲述了自定义分页在数据库层的理论。
解决方案五:
楼上这位大哥厉害
解决方案六:
引用2楼zhoufoxcn的回复:
VB.NETcodeComd.CommandText="ProPageSet1"Comd.CommandType=CommandType.StoredProcedure;'默认是文本的,这样一设置表示"ProPageSet1"是存储过程名而不是SQL语句Dimparam1AsNewSqlParameter("@tb",SqlDbType.VarChar,50)param1.Direction=ParameterDirection.Inputparam1.Value="dhz"Comd.Parameters.Add(param1)Dimparam2AsNewSqlParameter("@col",SqlDbType.VarChar,50)param2.Direc…
就这个。。。。
解决方案七:
引用2楼zhoufoxcn的回复:
VB.NETcodeComd.CommandText="ProPageSet1"Comd.CommandType=CommandType.StoredProcedure;'默认是文本的,这样一设置表示"ProPageSet1"是存储过程名而不是SQL语句Dimparam1AsNewSqlParameter("@tb",SqlDbType.VarChar,50)param1.Direction=ParameterDirection.Inputparam1.Value="dhz"Comd.Parameters.Add(param1)Dimparam2AsNewSqlParameter("@col",SqlDbType.VarChar,50)param2.Direc…
感觉还是C#看爽些,顶