SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百K的内存就够了。
SQLite已经被多种软件和产品使用,Mozilla FireFox就是使用SQLite来存储配置数据的,Android和iPhone都是使用SQLite来存储数据的。
SQLite体系结构图如下:
编译器包括Tokenizer(词法分析器)、 Parser(语法分析器)、Code Generator(代码产生器),后端由B-tree,Pager,OS Interface组成。
B-tree的职责是负责排序,维护多个数据库页之间错综复杂的关系,将页面组织成树状结构,页面就是树的叶子
Pager负责传输,根据B-tree的请求从磁盘读取页面或者写入页面。
公共服务中有各种实用的功能比如:内存分配、字符串比较,Unicode转换等。
其实你这个可能不是定时器的问题.比如:try{dbhelper.con.open() while(dataread.read()){ dbhelp.con.open() cmd.ExecuteNonQuery() dbhelper.close()} dr.close{ }catch(){}finally{dbhelper.con.close()} 写得很粗糙, 我的意思是: 在执行datareader这个 *** 作时, 如果中间又插入了新的数据库连接和关闭 *** 作, 就容易出错, 唯一的办法是: 想办法把两个 *** 作分开来, 千万不能嵌套!这样的任务最好是新建数据库任务来完成。用程序实现效率不高,效果不太保证。
在Global.asax中加入以下代码
void Application_Start(object sender, EventArgs e)
{
//在应用程序启动时运行的代码
//定义定时器
System.Timers.Timer myTimer = new System.Timers.Timer(86400)//设置时间为1天
myTimer.Elapsed += new System.Timers.ElapsedEventHandler(myTimer_Elapsed)
myTimer.Enabled = true
myTimer.AutoReset = true
myTimer.Start()
}
//每隔30秒读取数据库中待发送的邮件列表
static void myTimer_Elapsed(object source, System.Timers.ElapsedEventArgs e)
{
//你要执行的代码
}
void Application_End(object sender, EventArgs e)
{
//在应用程序关闭时运行的代码
//解决IIS应用程序池自动回收的问题
//防止长时间没人访问时进程池回收而导致不能定时触发事件。
System.Threading.Thread.Sleep(1000)
//激发Application_Start
string url = "你的网址"
System.Net.HttpWebRequest myHttpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url)
System.Net.HttpWebResponse myHttpWebResponse = (System.Net.HttpWebResponse)myHttpWebRequest.GetResponse()
System.IO.Stream receiveStream = myHttpWebResponse.GetResponseStream()//得到回写的字节流
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)