大家都知道 Bitrac 一直有一个问题就是在 Medium Trust 下无法正常运行。一直以来我都在找这个问题的解决方案,自从 C#-SQLite 项目出现以后,这个问题已经不再是大问题了,经过这几天的调试和修改,我已经可以正式宣布,SQLite 在 Medium Trust 模式下运行啦。

我已经解决的问题:

  1. 查询语句中带有中文时出错的问题。
  2. 虽然 C#-SQLite 是纯托管代码,但是在 Medium Trust 下还是无法运行,经过几天的调试和修改,我已经修正了这个问题,Medium Trust 下运行不再是问题了
  3. 解决了 LIKE 模糊查询中文返回所有记录的问题。

不过现在还有两个问题:

  1. 相比以前 System.Data.SQLite性能降低了 70% 左右,不过相比其他的博客程序,Bitrac 的性能还是非常不错的,到时候我发布程序的时候会发布两份 SQLite 库,大家各自选择就是了。
  2. 目前 C#-SQLite 有个很大的问题就是 LIKE 中文模糊搜索的时候会搜索到所有的记录,这个就属于 BUG 范畴了,是必须要解决的。我也正在准备解决。争取近期解决,并发布新的 Bitrac 版本。
  3. 临时目录我使用的是 App_Data 目录,目前会生成很多临时文件,争取解决只生成一个文件。

如果你对 C#-SQLite 也感兴趣,可以去他的项目主页看看,暂时说这么多。研究 LIKE 中文查询去了。

LIKE 中文查询的问题已经解决,下一步就是测试咯。

本日志由 Loveyuki 于 2010-02-22 10:29 发表到 技术新知 中,目前已经被浏览 1483 次,评论 8 次;

作者添加了以下标签: SQLiteMedium TrustASP.NETC#

以前有朋友反馈过在 Mono 下无法运行 Bitrac,这两天测试 Bitrac 的兼容性的时候顺便也测试了一下 Bitrac 在 Mono 下的表现,系统嘛还是选择我最喜欢的 Archlinux,Web 服务器就用 Lighttpd 了,用 FastCGI-Mono-Server 来跑 Bitrac,服务器的配置方法,我去年年初就发过了,这里就不再累赘。

装好服务器,传好 Bitrac,运行,哦也,错误。SQLite 库不行,到他主页一看哦,应该用可管理的那个库,而不是集成的库,换,再运行还是错误,这次是路径有错误了,唉,不规范代码害死人了,把所有不规范的代码都换了,然后把权限设置好,哈哈,成功运行,不过速度好慢啊,第一次启动时间竟然需要 3 秒,稳定运行后,每个页面都要 50 毫秒左右,性能比 IIS 下面要低两倍。看来用 Linux 跑 .NET 的应用还是很不现实啊。

另外就是 SQLite 数据库连接字符串的 Pooling=True 问题了,发现打开这个以后,会造成数据库文件被锁定,很容易出现错误,虽然开启那个选项可以提高两毫秒的速度,但是为了稳定性,还是关闭了吧。下个版本很快发布,到时候有兴趣和条件的朋友可以试试在 Mono 下跑 Bitrac 了。呵呵

另外就是有些朋友的主机无法运行自动运行程序,我考虑在自动更新功能里面加入本地自动更新功能,就是你在我这里下载自动更新包以后上传到你的服务器更新,一切为了方便嘛,哈哈。

本日志由 Loveyuki 于 2009-06-24 15:24 发表到 学习笔记 中,目前已经被浏览 2180 次,评论 7 次;

作者添加了以下标签: BitracMonoLighttpdLinuxSQLite

Bitrac 程序内是直接引用了 System.Data.SQLite 这一命名空间,因为 ASP.NET 的特性,如果单独升级 SQLite 的库文件不重新编译程序那么程序运行时肯定无法找到所需要的程序集,因为版本号有了变化,而 Bitrac.Auto.dll 自动升级程序集也需要引用 SQLite 的库,但是我并不希望每次 SQLite 的库更新 Bitrac.Auto.dll 也要更新,那样会造成太多的不便,这时候就需要使用 ASP.NET 2.0 的一个新特性了,那就是 DbProviderFactories,Bitrac.Data.dll 依然使用旧的方法直接引用 SQLite 库。

首先在 web.config 文件里面增加:

  1. <system.data> 
  2.     <DbProviderFactories> 
  3.         <remove invariant="System.Data.SQLite"/> 
  4.         <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite"/> 
  5.     </DbProviderFactories> 
  6. </system.data> 

C# 使用以下代码就可以了:

  1. DbProviderFactory oFact = DbProviderFactories.GetFactory("System.Data.SQLite");  
  2.  
  3. using (DbConnection oConn = oFact.CreateConnection())  
  4. {  
  5.     oConn.ConnectionString = "数据库连接字符串";  
  6.     oConn.Open();  
  7.  
  8.     oConn.Close();  

其实 ASP.NET 程序支持多种数据库使用的也是这个方法。

本日志由 Loveyuki 于 2009-05-11 19:03 发表到 技术新知 中,目前已经被浏览 2466 次,评论 13 次;

作者添加了以下标签: SQLiteBitrac

Bitrac 使用的 SQLite 数据库建表的时候忘记了加入忽略大小写的参数。所以会造成很多不便,前一段时间使用中倒是没有发现什么问题,不过问题肯定会出现的。

今天凑空把数据库整理了一下。实现了忽略大小写,其实也很简单就是建表的时候为目标字段添加 "COLLATE NOCASE" 就可以了。不过 SQLite 没有直接修改字段属性的语句,所以我就写了一些 SQL 语句以达到平滑升级的目的。

下面我把升级的 SQL 语句打包上传上来,点击下载

升级步骤如下:

  1. 把数据库暂时下载回本地,然后用 SQLSpy 打开
  2. 用 SQLSpy 挨个打开 SQL 语句,然后执行
  3. 把新的数据库上传到站点

另外特别感谢使用了内测版本并汇报 BUG 的朋友汤尼尔

本日志由 Loveyuki 于 2007-12-12 13:51 发表到 原创作品 中,目前已经被浏览 3828 次,评论 10 次;

作者添加了以下标签: SQLite

这篇文章是根据 SQLite 官方 WIKI 里的内容翻译,如果有什么翻译不当的地方希望大家指出,毕竟我的英文水平实在很差。 SQLite 包括以下五个时间函数:

  1. date(日期时间字符串, 修正符, 修正符, ……)
  2. time(日期时间字符串, 修正符, 修正符, ……)
  3. datetime(日期时间字符串, 修正符, 修正符, ……)
  4. julianday(日期时间字符串, 修正符, 修正符, ……)
  5. strftime(日期时间格式, 日期时间字符串, 修正符, 修正符, ……)

上述五个函数需要一个日期时间字符串做参数,后面可以跟零到多个修正符参数。而 strftime() 函数还需要一个日期时间格式字符串做第一个参数。

本日志由 Loveyuki 于 2007-11-28 10:13 发表到 学习笔记 中,目前已经被浏览 6843 次,评论 8 次;

作者添加了以下标签: SQLite日期时间Datetime

首页只显示了部分日志内容,要查看日志的全部内容请阅读全文

71/2