比如:
存储过程端 在网页中调用存储过程如下:
…… cm=new SqlCommand("storedprocname",conn);
begin …………………………
select count(*) as count1 from a dr=cm.ExecuteReader();
select count(*) as count2 from b 接下来我想在网页端获得count1,count2的值,
end 请问应该怎么样写呢?
go
存储过程端 在网页中调用存储过程如下:
…… cm=new SqlCommand("storedprocname",conn);
begin …………………………
select count(*) as count1 from a dr=cm.ExecuteReader();
select count(*) as count2 from b 接下来我想在网页端获得count1,count2的值,
end 请问应该怎么样写呢?
go
@count1 int output,@count2 int output
@count1 int output,@count2 int output
select @count1=count(*) from a
select @count2=count(*) from b
这样,那么在网页中应该如何调用呢
dr=cm.ExecuteReader();
while (dr.Read())
{
int count1 = dr.GetInt32(0);
}
dr.NextResult();
while (dr.Read())
{
int count2 = dr.GetInt32(0);
}改用output型参数也是可以的
SqlCommand com = new SqlCommand();
然后设置com的连接等(省略)
然后添加参数,并设置为输出参数。
com.Paraments.Add("@count1",SqlDbType.Int,4);
com.Parameters["@count1"].Direction = System.Data.ParameterDirection.Output;
然后com.ExecuteNonQuery();
这个时候用int.Parse(com.Parameters["@count1"].Value.ToString());可以取得count1
同理取得count2
dr=cm.ExecuteReader();
while (dr.Read())
{
int count1 = dr.GetInt32(0);
}
dr.NextResult();
while (dr.Read())
{
int count2 = dr.GetInt32(0);
}
明明有记录的,可是读出来的全是0
也就是说count1为0,count2也为0,我不知道是什么原因
你是想要输出所有记录的个数吧
SQl语句这样写:
select * from a
后台这样写代码:
int i=0;
while(dr.Read())
{
i+=1;
}
Response.Write(i);
是的,我是想要输出所有记录的个数,但是在存储过程中我要用到两个SQL语句,因为涉及到多个表
那么在网页中我就不知道怎么样写代码:
我在网页中是这样写的 在存储过程中是这样写的
dr=cm.ExecuteReader(); select count(*) as count1 from a
while (dr.Read()) select count(*) as count2 from b
{
int count1 = dr.GetInt32(0);
}
dr.NextResult();
while (dr.Read())
{
int count2 = dr.GetInt32(0);
}
明明有记录的,可是读出来的全是0
也就是说count1为0,count2也为0,我不知道是什么原因,可以帮帮我吗
public SqlDataReader aa()
{
try
{
conn.Open
cm=new SqlCommand("storedprocname",conn);
dr=cm.ExecuteReader();
return dr;
}
catch(Exception e)
{
conn.Close()
return null;
}
}
dr=aa();
if(dr!=null && dr.HasRows)
{
while (dr.Read()) {
int count1 = dr.GetInt32(0);
}
dr.NextResult();
while (dr.Read())
{
int count2 = dr.GetInt32(0);
}
}
else
{
Response.Write("全部记录为空");
}
明明有记录的,可是读出来的全是0
也就是说count1为0,count2也为0,我不知道是什么原因,
SqlParameter parametercount = new SqlParameter("@count1", SqlDbType.Int);
parametercount.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parametercount); myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close(); 执行存储过程后可以取出来啊,这样就可以了,如下string count1 = parametercount.Value.ToString()
public SqlDataReader aa()
{
try
{
conn.Open
cm=new SqlCommand("storedprocname",conn);
dr=cm.ExecuteReader();
return dr;
}
catch(Exception e)
{
conn.Close()
return null;
}
}
dr=aa();
if(dr!=null && dr.HasRows)
{
while (dr.Read()) {
int count1 = dr.GetInt32(0);
}
dr.NextResult();
while (dr.Read())
{
int count2 = dr.GetInt32(0);
}
}
else
{
Response.Write("全部记录为空");
}
明明有记录的,可是读出来的全是0
也就是说count1为0,count2也为0,我不知道是什么原因,我就想用这样的方法去实现(不想用输出参数),不知道怎么样才能成功,快点来帮帮我吧
急急急呀