存储过程调用问题

时间:2023-02-08 15:47:32

declare @sql varchar(8000)
set @sql = 'select m.orderid , m.orderno , m.ContSize , m.ContClass , m.contno '
select @sql = @sql + ' , max(case n.px when ''' + cast(px as varchar) + ''' then yfdx else '''' end) [yfdx' + cast(px as varchar) + ']'
                   + ' , max(case n.px when ''' + cast(px as varchar) + ''' then yflx else 0 end) [yflx' + cast(px as varchar) + ']'
                   + ' , max(case n.px when ''' + cast(px as varchar) + ''' then yfje else 0 end) [yfje' + cast(px as varchar) + ']'
from (select distinct px from (select * , px = (select count(*) from planyf where orderid = t.orderid and yfid < t.yfid) + 1 from planyf t) o) as a
set @sql = @sql + ' from planorder m ,(select * , px = (select count(*) from planyf where orderid = t.orderid and yfid < t.yfid) + 1 from planyf t) n where m.orderid = n.orderid and m.orderid=2 group by m.orderid , m.OrderNo , m.ContSize , m.ContClass , m.contno'
exec(@sql) 


sql的存储过程如上:

请问我在C#windows窗体中如何调用存储过程??

或者说在VB中调用

11 个解决方案

#1


sqlcommand.commandtype指定为存储过程

#2


设置一下你的COMMAND的类型。

#3


最好给个例子了。

#4


private void sql_param()
  {
   SqlConnection conn=new SqlConnection("");
   string sql="execute ";
   SqlCommand comm=new SqlCommand(sql,conn);
          
   comm.CommandType=CommandType.Text;

   SqlDataAdapter da=new SqlDataAdapter(comm);
   DataSet ds=new DataSet();
   da.Fill(ds);
   this.DataGrid1.DataSource=ds;
   this.DataGrid1.DataBind();
  
  }

#5


asp.net夜话之七:ADO.NET介绍
ADO.NET是对Microsoft ActiveX Data Objects (ADO)一个跨时代的改进,它提供了平台互用性和可伸缩的数据访问。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO .NET组件,它可以是基于一个Microsoft Visual Studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。以前做数据库访问的时候,需要一直与数据库保持连接,直到获取完所有满足需要的数据之后才会断开数据库连接,这种数据库访问方式称之为连接式数据访问技术。相比于以前的连接式数据访问技术,ADO.NET除了提供连接式数据访问技术之外,还提供了另一种断开式解决方案,那就是在内存中模拟一个数据库,也就是内存中的数据库。我们知道在实际的数据库技术中,每个数据库就是一个业务逻辑单元,一般来说这个数据库包含了实现一个应用软件或者一个网站所需要的全部数据。
本篇中还讲述了自定义分页在数据库层的理论。

#6


Command对象
Command对象也称为数据库命令对象,Command对象主要执行包括添加、删除、修改及查询数据的操作的命令。也可以用来执行存储过程。用于执行存储过程时需要将Command对象的CommandType 属性设置为CommandType.StoredProcedure,默认情况下CommandType 属性为CommandType.Text,表示执行的是普通SQL语句。
Command主要有三个方法:
ExecuteNonQuery () :执行一个SQL语句,返回受影响的行数,这个方法主要用于执行对数据库执行增加、更新、删除操作,注意查询的时候不是调用这个方法。
ExecuteReader ():执行一个查询的SQL语句,返回一个DataReader对象。
ExecuteScalar ():从数据库检索单个值。这个方法主要用于统计操作。

#7


public void CreateSqlCommand() 
{
   SqlCommand command = new SqlCommand();
   command.CommandTimeout = 15;
   command.CommandType = CommandType.StoredProcedure;//设置要执行的语句为存储过程
   command.CommandText="GetAllUser";//设置存储过程的名字
}


#8



SqlConnection Conn = new SqlConnection( "连接数据库字符串" );
Conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = Conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "存储过程名字";

#region 有参数则加以下语句
cmd.Parameters.Add( new SqlParameter( "存储过程参数1", 参数值1 ) );
cmd.Parameters.Add( new SqlParameter( "存储过程参数2", 参数值2 ) );
cmd.Parameters.Add( new SqlParameter( "存储过程参数3", 参数值3 ) );
cmd.Parameters.Add( new SqlParameter( "存储过程参数4", 参数值4 ) );
#endregion 有参数则加以下语句

IDataReader dr = cmd.ExecuteReader();
while ( dr.Read() )
{
// 循环读取数据
}

dr.Dispose(); // 释放资源
cmd.Dispose();
Conn.Dispose();

#9


CommandType.StoredProcedure

#10


来晚了...
楼主记得用这个.CommandType.StoredProcedure

#11


我是采用lostinetdotcom 所写的SqlScope 有什么调用方法吗?

#1


sqlcommand.commandtype指定为存储过程

#2


设置一下你的COMMAND的类型。

#3


最好给个例子了。

#4


private void sql_param()
  {
   SqlConnection conn=new SqlConnection("");
   string sql="execute ";
   SqlCommand comm=new SqlCommand(sql,conn);
          
   comm.CommandType=CommandType.Text;

   SqlDataAdapter da=new SqlDataAdapter(comm);
   DataSet ds=new DataSet();
   da.Fill(ds);
   this.DataGrid1.DataSource=ds;
   this.DataGrid1.DataBind();
  
  }

#5


asp.net夜话之七:ADO.NET介绍
ADO.NET是对Microsoft ActiveX Data Objects (ADO)一个跨时代的改进,它提供了平台互用性和可伸缩的数据访问。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO .NET组件,它可以是基于一个Microsoft Visual Studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。以前做数据库访问的时候,需要一直与数据库保持连接,直到获取完所有满足需要的数据之后才会断开数据库连接,这种数据库访问方式称之为连接式数据访问技术。相比于以前的连接式数据访问技术,ADO.NET除了提供连接式数据访问技术之外,还提供了另一种断开式解决方案,那就是在内存中模拟一个数据库,也就是内存中的数据库。我们知道在实际的数据库技术中,每个数据库就是一个业务逻辑单元,一般来说这个数据库包含了实现一个应用软件或者一个网站所需要的全部数据。
本篇中还讲述了自定义分页在数据库层的理论。

#6


Command对象
Command对象也称为数据库命令对象,Command对象主要执行包括添加、删除、修改及查询数据的操作的命令。也可以用来执行存储过程。用于执行存储过程时需要将Command对象的CommandType 属性设置为CommandType.StoredProcedure,默认情况下CommandType 属性为CommandType.Text,表示执行的是普通SQL语句。
Command主要有三个方法:
ExecuteNonQuery () :执行一个SQL语句,返回受影响的行数,这个方法主要用于执行对数据库执行增加、更新、删除操作,注意查询的时候不是调用这个方法。
ExecuteReader ():执行一个查询的SQL语句,返回一个DataReader对象。
ExecuteScalar ():从数据库检索单个值。这个方法主要用于统计操作。

#7


public void CreateSqlCommand() 
{
   SqlCommand command = new SqlCommand();
   command.CommandTimeout = 15;
   command.CommandType = CommandType.StoredProcedure;//设置要执行的语句为存储过程
   command.CommandText="GetAllUser";//设置存储过程的名字
}


#8



SqlConnection Conn = new SqlConnection( "连接数据库字符串" );
Conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = Conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "存储过程名字";

#region 有参数则加以下语句
cmd.Parameters.Add( new SqlParameter( "存储过程参数1", 参数值1 ) );
cmd.Parameters.Add( new SqlParameter( "存储过程参数2", 参数值2 ) );
cmd.Parameters.Add( new SqlParameter( "存储过程参数3", 参数值3 ) );
cmd.Parameters.Add( new SqlParameter( "存储过程参数4", 参数值4 ) );
#endregion 有参数则加以下语句

IDataReader dr = cmd.ExecuteReader();
while ( dr.Read() )
{
// 循环读取数据
}

dr.Dispose(); // 释放资源
cmd.Dispose();
Conn.Dispose();

#9


CommandType.StoredProcedure

#10


来晚了...
楼主记得用这个.CommandType.StoredProcedure

#11


我是采用lostinetdotcom 所写的SqlScope 有什么调用方法吗?