运行到_TotalRecord = int.Parse(sqlcom.Parameters["@TotalCount"].Value.ToString()); 时提示未将对象引用设置到对象的实例。怎么解决? using (SqlConnection sqlcon = new SqlConnection("server=.;database=Platform;user id=reportuser;password=reportuser"))
{
using (SqlCommand sqlcom = new SqlCommand())
{
sqlcom.Connection = sqlcon;
sqlcom.CommandType = CommandType.StoredProcedure;
sqlcom.CommandText = "getData";
sqlcom.Parameters.AddWithValue("@PageSize", SqlDbType.Int).Value = int.Parse(this.txtPageSize.Text);
sqlcom.Parameters.AddWithValue("@PageIndex", SqlDbType.Int).Value = _CurPage;
sqlcom.Parameters.AddWithValue("@TableName", SqlDbType.VarChar).Value = _spName;
sqlcom.Parameters.AddWithValue("@SelField", SqlDbType.VarChar).Value = _SelField;
sqlcom.Parameters.AddWithValue("@ParaField", SqlDbType.VarChar).Value = _ParaStr;
sqlcom.Parameters.AddWithValue("@SortField", SqlDbType.VarChar).Value = _ReturnField;
sqlcom.Parameters.Add("@TotalCount", SqlDbType.VarChar, 255).Direction = ParameterDirection.Output; sqlcon.Open();
sqlcom.ExecuteReader();
_TotalRecord = int.Parse(sqlcom.Parameters["@TotalCount"].Value.ToString()); //未将对象引用设置到对象的实例。 if (ds.Tables["Data"] != null)
ds.Tables.Remove("Data");
using (SqlDataAdapter sqladp = new SqlDataAdapter(sqlcom))
{
sqladp.Fill(ds, "Data");
this.dataGridView1.DataSource = ds.Tables["Data"]; if (this.chkPage.Checked)
{
_TotalPage = _TotalRecord / int.Parse(this.txtPageSize.Text);
if (_TotalRecord % int.Parse(this.txtPageSize.Text) > 0)
_TotalPage++;
}
}
}
}
{
using (SqlCommand sqlcom = new SqlCommand())
{
sqlcom.Connection = sqlcon;
sqlcom.CommandType = CommandType.StoredProcedure;
sqlcom.CommandText = "getData";
sqlcom.Parameters.AddWithValue("@PageSize", SqlDbType.Int).Value = int.Parse(this.txtPageSize.Text);
sqlcom.Parameters.AddWithValue("@PageIndex", SqlDbType.Int).Value = _CurPage;
sqlcom.Parameters.AddWithValue("@TableName", SqlDbType.VarChar).Value = _spName;
sqlcom.Parameters.AddWithValue("@SelField", SqlDbType.VarChar).Value = _SelField;
sqlcom.Parameters.AddWithValue("@ParaField", SqlDbType.VarChar).Value = _ParaStr;
sqlcom.Parameters.AddWithValue("@SortField", SqlDbType.VarChar).Value = _ReturnField;
sqlcom.Parameters.Add("@TotalCount", SqlDbType.VarChar, 255).Direction = ParameterDirection.Output; sqlcon.Open();
sqlcom.ExecuteReader();
_TotalRecord = int.Parse(sqlcom.Parameters["@TotalCount"].Value.ToString()); //未将对象引用设置到对象的实例。 if (ds.Tables["Data"] != null)
ds.Tables.Remove("Data");
using (SqlDataAdapter sqladp = new SqlDataAdapter(sqlcom))
{
sqladp.Fill(ds, "Data");
this.dataGridView1.DataSource = ds.Tables["Data"]; if (this.chkPage.Checked)
{
_TotalPage = _TotalRecord / int.Parse(this.txtPageSize.Text);
if (_TotalRecord % int.Parse(this.txtPageSize.Text) > 0)
_TotalPage++;
}
}
}
}
解决方案 »
- C# 关于WINRAR命令
- 请帮我看看代码,模拟登陆,发帖,可以登陆了,发帖时不能携带cookie
- C#怎么调用DelPhi
- 导出EXCEL出问题了
- 关于用数组反排序的问题
- 求:C#应用程序入门经典(英文名称为:Beginning C# WEB Application with Visual Studio.NET)这本书的源代码!
- 有 mp3 的播放源码吗
- 请各位帮帮忙!一个报表的问题?
- stringTable 类?
- 用InstallUtil.exe无法安装Window Service? 老是报错,如何解决?
- 请教一个算法
- 为什么空字串,无法转成数值呢?对于数值列,没有字符的单元格,应该视为0呀?
dr.close()以后才可以获取的
sqlcon.Open();
sqlcom.ExecuteReader();
_TotalRecord = int.Parse(sqlcom.Parameters["@TotalCount"].Value.ToString()); //未将对象引用设置到对象的实例。//改为
sqlcon.Open();
SqlDataReader reader = sqlcom.ExecuteReader();
while(reader.Read())
{
string res = int.Parse(reader["TotalCount"].ToString());
}
dr是什么?
还是sqlcom的?
我的存储过程中即查出数据,又要返回一个值(用Return方式或Output参数方式都报同一个错)
这样可以做到吗?存储过程如下
if object_id('getData','p') is not null
drop proc getData
gocreate proc getData
(
@PageSize int,
@PageIndex int,
@TableName varchar(20),
@SelField varchar(2000),
@ParaField varchar(2000),
@SortField varchar(200),
@TotalCount int output
)
asdeclare @SQLStr nvarchar(4000)
--set @SQLStr='select top '+convert(varchar(20),@PageSize)+' Row_number() over(order by getdate()) as F0,'+@SelField+' from '+@TableName+' where 1=1 and '+@ParaField+'
--and '+@KeyField+' in (select top '+convert(varchar(20),@PageSize*@PageIndex)+' '+@KeyField+' from '+@TableName+' where 1=1 and '+@ParaField+' order by '+@SortField+' desc)
--order by '+@SortFieldset @SQLStr='with tt as (
select top '+convert(varchar(20),@PageSize*@PageIndex)+' Row_number() over(order by '+@SortField+') as F0,'+@SelField
+' from '+@TableName+' where 1=1 and '+@ParaField+' order by '+@SortField
+') select * from tt where F0 between '+convert(varchar(20),@PageSize*(@PageIndex-1)+1)+' and '+convert(varchar(20),@PageSize*@PageIndex)+' order by '+@SortFieldEXEC sp_executesql @SQLStr--declare @TotalCount int
set @SQLStr='select @iRet=count(1) from '+@TableName+' where 1=1 and '+@ParaField
EXEC sp_executesql @SQLStr,N'@iRet int output',@TotalCount output
return --@TotalCount
godeclare @out int
exec getData 20,1,'sp7101','F1,F3,F5,F6,F11,F10,F4,F7,F8,F9','F5=''200''','F1', @out output
print @out
根据参数pagesize和pageindex,返回第pageindex页的pagesize条记录,
同时返回所有满足查询条件的所有记录条数。请高人指点~
是int型,我打错了,改成int型还是报那个未将对象引用设置到对象的实例。我想知道既查出数据放到DataSet(需要的页的记录,如20条),同时又得到所有满足条件的记录数(这里是一个总数,用Return或输出参数返回,如69)要怎么做。
SqlDataReader reader = sqlcom.ExecuteReader();
reader.Close();
_TotalRecord = int.Parse(sqlcom.Parameters["@TotalCount"].Value.ToString());