连续不断F5刷新页面的时候就返回“未将对象引用设置到对象的实例

ganxiangxiazhen 2018-11-03 10:33:11
以下是C#调用的方法,正常运行能返回数据,但连续不断F5刷新页面的时候就返回“未将对象引用设置到对象的实例。”各位老大们,麻烦给看看怎么回事吧!!!


public static DataView GetDataView(string strSQL)
{
//查询数据,取得数据视图
OleDbDataAdapter OleAdp = new OleDbDataAdapter(strSQL, conn);
try
{
openConnection();
DataSet Rs = new DataSet();
OleAdp.Fill(Rs);
return Rs.Tables[0].DefaultView;



}
catch (Exception e)
{
throw new Exception(e.Message);
}
finally
{
if (OleAdp != null)
{
OleAdp.Dispose();
closeConnection();

}
}

}
...全文
49 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ganxiangxiazhen 2018-11-05
  • 打赏
  • 举报
回复
大哥们 谢谢了
Chrisfrog 2018-11-05
  • 打赏
  • 举报
回复
大哥的意思是你要搞懂实例的概念,只有创建新的sqlconnection实例才能保证你连接的时候是在这个实例上所做的连接而不是同一静态变量重复调用。
  • 打赏
  • 举报
回复
OleDbConnection 等等也是一样。不要乱用什么静态变量。 乱用静态变量,说明没经历过并发。别说网站多用户并发了,就算是单机连续按 F5 这种并发请求都垮了!!!
ganxiangxiazhen 2018-11-05
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
不要乱用静态变量,当你并发它的时候,胡乱修改它的代码就会影响其它读取它的代码。

conn 应该使用
using(var conn = new SqlConnection(......))
{
conn.Open();
....................
}
这类代码,每一次使用是要 new 一个实例出来。

不要胡乱使用静态变量。



“静态变量属于共享变量 ”是这个意思吗??
  • 打赏
  • 举报
回复
不要乱用静态变量,当你并发它的时候,胡乱修改它的代码就会影响其它读取它的代码。 conn 应该使用
using(var conn = new SqlConnection(......))
{
    conn.Open();
    ....................
}
这类代码,每一次使用是要 new 一个实例出来。 不要胡乱使用静态变量。
Chrisfrog 2018-11-05
  • 打赏
  • 举报
回复
改用system.data.sqlclient里面的类来连数据库试试
ganxiangxiazhen 2018-11-05
  • 打赏
  • 举报
回复
引用 1 楼 tangyanzhi1111 的回复:
数据库读取需要一段时间,你前台已经绑定后台还没读出来

估计会出现这种状况

通过什么方式做才能保证后台全部读取数据后,前台才能显示呢???
ganxiangxiazhen 2018-11-05
  • 打赏
  • 举报
回复
                //公司新闻
string strqry = "Select top 5 * From T_News where Newstypeid=1 order by id desc";
DataView dv = DBFun.GetDataView(strqry);
rp_News1.DataSource = dv;
rp_News1.DataBind();

//行业新闻
strqry = "Select top 5 * From T_News where Newstypeid=2 order by id desc";
dv = DBFun.GetDataView(strqry);
rp_News2.DataSource = dv;
rp_News2.DataBind();

//友情链接
//strqry = "Select * from T_friendUrl order by sitesort asc";
//dv = DBFun.GetDataView(strqry);
//rp_Friend.DataSource = dv;
//rp_Friend.DataBind();

//最新展示
strqry = "Select top 9 * from T_Product order by id desc";
dv = DBFun.GetDataView(strqry);
rp_ProductList.DataSource = dv;
rp_ProductList.DataBind();



引用 2 楼 sp1234 的回复:
例如 conn、openConnection 这类静态的东西,不要乱用。

像上面的调用代码,能不能说的详细一点呢?
  • 打赏
  • 举报
回复
例如 conn、openConnection 这类静态的东西,不要乱用。
江湖评谈 2018-11-04
  • 打赏
  • 举报
回复
数据库读取需要一段时间,你前台已经绑定后台还没读出来

估计会出现这种状况

62,051

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧