两个问题:1、怎样实现进入时打开数据库,然后在每个页面都不用再打开,可直接访问,2、一些全局参数,怎么样可以在每个网页都能访问到?

khler 2005-08-23 11:36:05
两个问题:
1、怎样实现进入时打开数据库,然后在每个页面都不用再打开,可直接访问;
2、一些全局参数,怎么样可以在每个网页都能访问到?

谢谢各位!!!
...全文
210 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sykpboy 2005-08-23
  • 打赏
  • 举报
回复
不可以長時間佔用連接的...
sykpboy 2005-08-23
  • 打赏
  • 举报
回复
huhu來晚了
brando_beat 2005-08-23
  • 打赏
  • 举报
回复
hchxxzx(NET?摸到一点门槛)
斑竹还是解释的很清楚的
smoothwood 2005-08-23
  • 打赏
  • 举报
回复
1、将数据放到DATASET中然后缓存到Cache中
不过CACHE还是有被自动清除的可能,所以判断CACHE中内容是否被删除
2、全局参数可以放在Application中

另外,缓存数据也要看情况,如果你的数据库奇大,那你一次取出所有数据缓存,不仅慢,而且也消耗服务器内存
ChengKing 2005-08-23
  • 打赏
  • 举报
回复
1.
把访问数库部分单独写一个类. 在每个页面中声明实例
2.
几种常用的变量:
Application是应用程序级变量,如果用到多个用户之间的通信的时候用
Session 是用户变量,一个用户访问多个页面时可以保存数据到另一个页面,只要此用户不注销就可以
ViewState 页面变量,相当于页面全局变量,但是一旦退出当前页面,它就会丢失

用法:
如果有两个人: 甲和已在同学访问一个网站
1.
Sessin["UserID"] = "甲";// 表示只要甲不注销,不文伦跳到哪个页面,string str = Session["UserID"]都保存初始化时的数据,常用于在: Page_Load事件中,验证身份
page_Load()
{
if(Session["UserID"] == null || Session["UserID"] == "")
{
Response.Redirect("登录页面,重新登录");
}
else
{
呈现出页面
}
}
2.
Application["x"];
只要赋了值,如: Application["x"]; 则甲和已可以共享到此值,可以用于计数器,记录站点访问量
只要一个用户登录,则Application["x"] += 1;//加一个数,表示有个新用户刚刚登录
3.
this.ViewState["y"] = "abcde";
则表示在本页面中,this.ViewState["y"] 值可以作为全局变量使用,只要不退出本页面,
包括刷新页面,它都不会丢失






-----------------------------------------------------------------








4.
Session失效

具体是session变量定以后使用response.redirect()或者客户端发出请求的页面,在这个页面中session变量会失效,无法取出它的值
使用server.transfer(),在新的转向页面中却可以取到session变量的值,但一旦在这个新的页面中点击链接,也就是从新从客户端发出请求的话,在响应的页面中session变量就会失效

这个是不管你使用框架集文件还是用户控件,只要是在响应客户端请求生成的页面中,session变量都会失效





hchxxzx 2005-08-23
  • 打赏
  • 举报
回复
1.你可写一个类,此类继承System.Web.UI.Page,如下
public class PageBase: System.Web.UI.Page
然后,在此类里面定义一个属性如下:
private OracleConnection cn_m = null;
public OracleConnection cn
{
get
{
if(this.cn_m == null)
{
try
{
this.cn_m = 打开的数据库对象;
}
catch
{

}
}
return(this.cn_m);
}
}

如此,在每个页面中,都继承此类
public class _Default : 上面的类

这样即可直接调用cn,当调用时,即会返回一个打开的数据库对象供你操作.
但打开之后,仍然必须关闭,你可在上述类中,再重写一个页面关闭函数
/// <summary>
/// 卸载页面,释放cn
/// </summary>
/// <param name="e"></param>
protected override void OnUnload(EventArgs e)
{
if(this.cn_m != null)
{
this.cn_m.Close();
}
}

2.你可定义一个类,此类里面,声明属性,并且为public(全局变量),如下:
public string xx = "";
在 Application_Start事件里面调用此类,生成内容,则在任意一个页面里面,调用此类的属性即可.
还有一些其他方法,比如说Application对象,或者session对象,甚至Cache对象,均可实现类似要求.
mapserver 2005-08-23
  • 打赏
  • 举报
回复
1、不是很理解的你的意思?
2、可以写在Application里或者是Session、Cookies里。
khler 2005-08-23
  • 打赏
  • 举报
回复
哇塞,高手如云啊!!!
很高兴有这么多解决方案,而且各位还探讨了各自的不足,很受启发!谢谢各位!!!
我以前用VC++做开发,现在借了一个项目用ASP.net + C#做,asp.net运行机制与C++程序大相径庭,我初涉此领域,希望hchxxzx(NET?摸到一点门槛) 、ChengKing(bantamweight)、smoothwood(吾谁与归) 、sp1234(羊肉太好吃…… 等各位高手以后多多帮忙 :)
  • 打赏
  • 举报
回复
close关闭连接,只是将它放入缓冲池留给下一个连接使用,并不立即关闭物理连接。反而,你不去关闭,但是频繁打开连接(这往往是程序运行与你想象的不一致所致),反而非常容易出错误。很多看似很高明的编程小技巧,在系统不断进化、智能化的过程中其实越来越显出多余和不稳定。
  • 打赏
  • 举报
回复
我见过一个人在页面开始 open 打开 connection,然后在页面的unload事件中 close 关闭。可惜他的程序总是发生“缓冲池满”的错误,原因就是没有及时关闭。

频繁地打开、关闭connection与打开不关闭相比,不怎么占用时间(花一点点时间换来可靠是值得的),因为只要连接串内容不变,connection并不会真的关闭,而会自动缓冲给其他连接使用。

62,074

社区成员

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

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

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

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