实时读取数据库数据?
想每秒就要查询一次数据库,实时读取数据库内容是查一次打开一次数据库,再关闭
还是一直保持连接啊?
或者有什么好的方法
对实时数据这块不是很了解
求高手指点。。。 --------------------编程问答-------------------- 定时器定时读取 --------------------编程问答-------------------- connection一直保持,不比断开 --------------------编程问答-------------------- 如果是很频繁的查找的话不要每次都创建连接再关闭,只打开一次连接,整个全部执行完了之后再关闭。
当然,要注意超时的设置和连接状态的判断,中间如果有关闭时再重新打开,可考虑用存储过程。 --------------------编程问答-------------------- 可以使用缓存一两秒中,在客户端多时可以减少连接次数 --------------------编程问答-------------------- mark! --------------------编程问答-------------------- 加个timer控件,可以判断下连接状态
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
conn.Open();
让一直在事件中 --------------------编程问答-------------------- 数据库连接很耗费资源,也是很重要的资源。
通常,在做小数据量的操作时,数据库连接时间会远大于数据库操作时间。
尽量避免频繁连接数据库。
频繁连接数据库,最好使用连接池合理管理连接。 --------------------编程问答-------------------- 数据库的数据不停的更新
BS版的不停的刷新数据库 读取数据
一直保持数据库连接不会有什么影响吗? --------------------编程问答-------------------- 要是不停访问数据库.这个服务器的承载量太可怕了吧.用户一多服务器就挂掉了.
建议做定时刷新吧.太频繁压力也很大 --------------------编程问答--------------------
恩 我也赞成这个, 还有你要实现什么样的功能要一秒读取一次数据库? 能否有别的方法来代替?
要从性能上考虑不要为了实现某个功能而这么做。 --------------------编程问答--------------------
+1 --------------------编程问答--------------------
实时监控的。。必须每秒读取数据库数据啊。。。 --------------------编程问答-------------------- 留名…… --------------------编程问答--------------------
同意 --------------------编程问答-------------------- 这样访问数据库确实很可怕,如果要想得到即时数据可以考虑换一种思路。另外,数据库连接是放到连接池的,关闭与否在这里应该不是重点。 --------------------编程问答-------------------- 木有人了啊 --------------------编程问答-------------------- 都知道弊端。。。没有好的解决方法吗。。。 --------------------编程问答-------------------- 都是有连接池的。用完就close掉,然后它就回连接池了。干嘛非得一直占着?在人的感觉中一秒钟很短,但是对于记起来讲,那却是很漫长的。 --------------------编程问答-------------------- 大家集思广益啊。。。。遇到这种情况一般都怎么做啊 --------------------编程问答--------------------
你读取数据,一定是为了查看是否有新的数据,可以采用。Net自带的缓冲机制,当数据库表有改变的时候,会通知你,并读取最新的数据:
/// <summary>
/// 此函数用来取Cache里面的数据
/// </summary>
/// <returns></returns>
protected DataTable GetFromCache()
{
try
{
if (HttpRuntime.Cache["Freights_PageRes"] == null)
{
DataTable dtMain =BasePage.GetDataTable("SELECT * FROM [Freights_PageRes]");
//启用更改通知
SqlCacheDependencyAdmin.EnableNotifications(BasePage.ConnectionString);
//连接到 SQL Server 数据库并为 SqlCacheDependency 更改通知准备数据库表
SqlCacheDependencyAdmin.EnableTableForNotifications(BasePage.ConnectionString, "Freights_PageRes");
//插入缓存
HttpRuntime.Cache.Insert("Freights_PageRes", dtMain, new SqlCacheDependency("Freights_PageRes", "Freights_PageRes"));
return dtMain;
}
else
{
//从缓存中取值
return (DataTable)HttpRuntime.Cache["Freights_PageRes"];
}
}
catch(Exception me)
{
this.MsgBox(me.Message);
return null;
}
}
--------------------编程问答--------------------
好办法。 --------------------编程问答-------------------- 应该是得有定时器的吧,interval=1000
然后就是查询并更新数据了,不用断开连接 --------------------编程问答-------------------- 换个思路,建一个系统服务,每一分钟生成实时数据文件,asp.net读取这个文件。 --------------------编程问答-------------------- 1秒,要是确定用户少就可以一直连接着,多了就麻烦了, --------------------编程问答-------------------- 20楼的方法可以在数据库中数据改变时清空"Freights_PageRes"缓存,也就是说当"Freights_PageRes"变空时说明数据库数据改变了,应该可以满足楼主需求。
附20楼写的代码的web.config中配置写法:
--------------------编程问答-------------------- "实时监控的。。必须每秒读取数据库数据啊。。。",
<connectionStrings>
<add name="conn" connectionString="你的数据库连接字符串"/>
</connectionStrings>
<system.web>
<caching>
<!--pollTime为查询数据库是否变动的间隔时间,毫秒单位-->
<sqlCacheDependency enabled="true" pollTime="1000">
<databases>
<add name="你的数据库名" connectionStringName="conn" pollTime="1000"/>
</databases>
</sqlCacheDependency>
</caching>
</system.web>
LZ是想做实时监控程序吧,每秒数据库,这种设计理念是不对的!就算是一次连接,如果要读取的表很多,数据量又大,那么对数据库服务器的开销是非常大的,从数据库读取数据,到界面显示,都可能超过一秒。
其实,实时监控程序,界面实时响应变化时间要求2~3秒,就是这样,直接用数据库的方式也不合理,除非数据库很小,用DataSet在内存表示。一般来说,实时监控软件都要求有实时库系统,就是界面与数据库之间的一个缓冲环节!界面一般只与实时库交互,设计数据变化,实时库才与数据库交互!
LZ如果想了解更多实时监控方面的设计,可以直接与我联系:sdl2002lyx@163.com,QQ公司封闭了! --------------------编程问答-------------------- 建议使用TIME控件 --------------------编程问答-------------------- 如果有非常非常高的实时要求,那就别用SQL Server这类数据库系统,使用专门的实时数据库系统,比如国产的Agilor之类。 --------------------编程问答-------------------- 一个小方法
例如,界面要每隔1秒实时读取A表,
新建一个实时监控B表,这个表中只有一行一列,就是最后更新时间(当A表中有插入,修改,删除时都触发此表修改这一个字段)
界面只需要和B表做判断就可以了,这样速度性能都没太大影响 --------------------编程问答--------------------
有这样的例子说明下吗 --------------------编程问答-------------------- 坐等好方法 --------------------编程问答-------------------- 为什么要实时呢?人也不可能实时在看数据吧
补充:.NET技术 , C#