DataReader查询结果为空时,绑定到datagrid出错 在执行dataGrid的DataBind方法之前不要Close连接和Reader就行了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用DataReader,为什么?建议用OleDbDataAdapter放在一个方法里,返回Datatable DataReader性能更高,速度更快,占用内存更小,所以能用DataReader就尽量用DataReader。 sorry, DataReader我嫌操作麻烦 DataReader必须在连接不关闭的状态的才能够使用。即要在帮定之后才可以释放连结.ExecuteReader() to:yypt111(游吟诗人) 如果熟悉操作DataReader,那么它并不比DataTabel或DataSet操作起来更麻烦,我不知道你说的麻烦是指什么? DataReader 特别好用!我爱!注意 你可以用 reader.Read() 来判断 数据库是否空! BindDataGrid(){ string autCod,autNam,sysNbr; autCod = AuthorityQuery.AuthorityCode ; autNam=AuthorityQuery.AuthorityName ; sysNbr=AuthorityQuery.SystemNumber ; dgAuthority.DataSource = PBAuthority.Select(autCod,autNam,sysNbr); dgAuthority.DataBind ();//dgAuthority 为DataGrid类型,系统在这里报错,但我并没有关闭datareader和连接}//PBAuthority类的定义public Class PBAuthority{ public static SqlDataReader Select(string autCod,string autNam,string sysNbr) { SqlParameter[] sqlParams=new SqlParameter[3]; sqlParams[0]=new SqlParameter("@AutCod",autCod); sqlParams[1]=new SqlParameter("@AutNam",autNam); sqlParams[2]=new SqlParameter("@SysNbr",sysNbr); StoredProcedure sproc=new StoredProcedure (PBConstDefine.STOREPROC_AUTSLT,sqlParams); return sproc.RunReader (); }}//storeprocedure的定义internal class StoredProcedure : IDisposable{ public SqlCommand command; public StoredProcedure( string sprocName, SqlParameter[] parameters ) { command = new SqlCommand( sprocName, new SqlConnection( CMBNJISConfiguration.ConnectionString ) ); command.CommandType = CommandType.StoredProcedure; foreach ( SqlParameter parameter in parameters ) command.Parameters.Add( parameter ); command.Parameters.Add( new SqlParameter( "ReturnValue", SqlDbType.Int, /* int size */ 4, ParameterDirection.ReturnValue, /* bool isNullable */ false, /* byte precision */ 0, /* byte scale */ 0, /* string srcColumn */ string.Empty, DataRowVersion.Default, /* value */ null )); command.Connection.Open(); } public SqlDataReader RunReader() { if ( command == null ) throw new ObjectDisposedException( GetType().FullName ); return command.ExecuteReader( CommandBehavior.CloseConnection );//注:调用此方法时出错,改为以下方法时不出错,请各位高手诊断 //return command.ExecuteReader(); } BindDataGrid(){ SqlDataReader dr; string autCod,autNam,sysNbr; autCod = AuthorityQuery.AuthorityCode ; autNam=AuthorityQuery.AuthorityName ; sysNbr=AuthorityQuery.SystemNumber ; dr = PBAuthority.Select(autCod,autNam,sysNbr); dgAuthority.DataSource = dr; dgAuthority.DataBind ();//dgAuthority 为DataGrid类型,系统在这里报错,但我并没有关闭datareader和连接 dr.Close();}注意:上面有三处进行了改动; 对了,将 dr.Close();放到调用了BindDataGrid()方法之后来用就可以了 但同时要将SqlDataReader dr;放到外面去声明; Timer.Elapsed事件如何传递参数 将搜索结果排在前面,其余信息顺序排在后面,用SQL如何实现 asp.net 发送邮件 AJAX如何定时刷新DIV内容? 怎样让别人看不到我的WebService,是不是要设置web.config cache可以设置缓冲时间的吗? 急。。。 gridview 和 datagrid自动生成列问题 谁人告诉我树怎么用? 求助 web安装布署后无法显示数据 谁有asp.net中可以用的listview、trueview 、tabstrip 等控件,微软网站上的那个不能下 服务器端.vb代码生成table的td的问题
.ExecuteReader()
如果熟悉操作DataReader,那么它并不比DataTabel或DataSet操作起来更麻烦,我不知道你说的麻烦是指什么?
注意 你可以用 reader.Read() 来判断 数据库是否空!
{
string autCod,autNam,sysNbr;
autCod = AuthorityQuery.AuthorityCode ;
autNam=AuthorityQuery.AuthorityName ;
sysNbr=AuthorityQuery.SystemNumber ;
dgAuthority.DataSource = PBAuthority.Select(autCod,autNam,sysNbr);
dgAuthority.DataBind ();//dgAuthority 为DataGrid类型,系统在这里报错,但我并没有关闭datareader和连接
}//PBAuthority类的定义
public Class PBAuthority
{
public static SqlDataReader Select(string autCod,string autNam,string sysNbr)
{
SqlParameter[] sqlParams=new SqlParameter[3];
sqlParams[0]=new SqlParameter("@AutCod",autCod);
sqlParams[1]=new SqlParameter("@AutNam",autNam);
sqlParams[2]=new SqlParameter("@SysNbr",sysNbr);
StoredProcedure sproc=new StoredProcedure (PBConstDefine.STOREPROC_AUTSLT,sqlParams);
return sproc.RunReader ();
}
}//storeprocedure的定义
internal class StoredProcedure : IDisposable
{
public SqlCommand command;
public StoredProcedure( string sprocName, SqlParameter[] parameters )
{
command = new SqlCommand( sprocName, new SqlConnection( CMBNJISConfiguration.ConnectionString ) );
command.CommandType = CommandType.StoredProcedure;
foreach ( SqlParameter parameter in parameters )
command.Parameters.Add( parameter );
command.Parameters.Add(
new SqlParameter( "ReturnValue",
SqlDbType.Int,
/* int size */ 4,
ParameterDirection.ReturnValue,
/* bool isNullable */ false,
/* byte precision */ 0,
/* byte scale */ 0,
/* string srcColumn */ string.Empty,
DataRowVersion.Default,
/* value */ null
));
command.Connection.Open();
} public SqlDataReader RunReader()
{
if ( command == null )
throw new ObjectDisposedException( GetType().FullName );
return command.ExecuteReader( CommandBehavior.CloseConnection );//注:调用此方法时出错,改为以下方法时不出错,请各位高手诊断
//return command.ExecuteReader();
}
{
SqlDataReader dr; string autCod,autNam,sysNbr;
autCod = AuthorityQuery.AuthorityCode ;
autNam=AuthorityQuery.AuthorityName ;
sysNbr=AuthorityQuery.SystemNumber ;
dr = PBAuthority.Select(autCod,autNam,sysNbr); dgAuthority.DataSource = dr;
dgAuthority.DataBind ();//dgAuthority 为DataGrid类型,系统在这里报错,但我并没有关闭datareader和连接 dr.Close();
}注意:上面有三处进行了改动;