用什么方法可以直接进入内存中已经存在的ds
用vs2008编程中,首先通过创建SQL数据库连接、对一个表建立耦合填充后在记录集ds中产生了多个表。在操作过程中多次进入对DS中的表的数据反复进行修改,最后才确定保存到数据库。在未确定保存时,每次进入DS中的表如果都要进行一次连接、耦合、填充的话,上次在DS表中修改的数据就被冲掉了。请教,用什么方法可以直接进入内存中已经存在的ds。
编程
SQL
--------------------编程问答--------------------
先把语文学好再搞程序吧
--------------------编程问答--------------------
dataset 的数据本来就是存在内存中的。
--------------------编程问答--------------------
冒失他的意思是直接内存操作..
--------------------编程问答--------------------
很报歉,没有说明白。其意思是:多次进入到ds中,不要每次都将数据库中的表调到ds中来。也就是说有没有一种方法直接进入ds操作,直到确定将ds中的数据保存到数据库为止。
--------------------编程问答--------------------
将数据库中得到的数据缓存在内存中
--------------------编程问答--------------------
用编码方式可以直接操作 dataset, datatable,请参考msdn 从头学一下。
比如:ds.Tables[0].Rows[0]["Column1"] = "test" 直接修改 ds 第一个datatable里第一行,Column1列的数据。
--------------------编程问答--------------------
ds.Tables[0].Rows[0]["Column1"] = "test" 直接修改 ds 第一个datatable里第一行,Column1列的数据。
问题的关键点是:要同时对DS中的其他表也进行修改操作,待几个表都完成修改后一并作保存,在这个过程中需在DS的几个表中轮换操作,每个DS的表都通过listview控件显示出来。我需要在不同的listview控件中切换。
--------------------编程问答--------------------
吧ds放到cache里面。
另外说一下,你的思路是完全不对滴。
--------------------编程问答--------------------
请教,如何将DS放在cache里面。
是在cache中独立操作DS中的表吗?这个方法怎么搞?好象可以解决问题咧。
--------------------编程问答--------------------
1.首先判断cache是否有对应的ds
HttpRuntime.Cache.Get(key)//key是你这个ds的唯一标示,自己定义
2.如果不存在对应的ds,将ds放到cache中
if (HttpRuntime.Cache.Get(key) == null)
{
首先得到ds(第一次或者在cache过期的时候要查询数据库的)
//key只ds的唯一标示,value是ds,cachetime是这个cache的有效时间
HttpRuntime.Cache.Insert(key, value, null, DateTime.Now.AddHours(cacheTime), System.Web.Caching.Cache.NoSlidingExpiration, CacheItemPriority.Default, null);
}
3.如果存在对应的ds则去提前这个ds
Dataset ds=(DataSet)HttpRuntime.Cache.Get(key);
4.操作得到的ds
--------------------编程问答--------------------
你这个就涉及到架构的设计问题,不是你想的那么简单,你要将这几个表中的数据预加载到服务器内存中,然后写操作还是需要写服务器和数据库,但是其它用户去读的话,就读内存中的数据就可以了。
--------------------编程问答--------------------
前面加个static就行了
这样做就成了单例模式,但之后你又需要解决线程安全的问题了
--------------------编程问答--------------------
肯定是使用 session或者使用profile 数据库了
--------------------编程问答--------------------
static dataset 会造成线程安全问题,对于稀缺资源才使用单利模式
--------------------编程问答--------------------