大家都知道 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 发表到 技术新知 中,目前已经被浏览 325 次,评论 8 次;

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

  1. xFillList oList = new xFillList(); 
  2. xFillItem oItem = null
  3. XmlTextReader oXml = new XmlTextReader(strReqUrl); 
  4. while (oXml.Read()) 
  5.     if (oXml.Name.Equals("Item")) 
  6.     { 
  7.      switch (oXml.NodeType) 
  8.      { 
  9.          case XmlNodeType.Element: 
  10.          oItem = new xFillItem();  
  11.          break
  12.          case XmlNodeType.EndElement: 
  13.          oList.Add(oItem); 
  14.          oItem = null
  15.          break
  16.      } 
  17.     } 
  18.  
  19.     if (oXml.NodeType == XmlNodeType.Element) 
  20.     { 
  21.      if (oXml.Name.Equals("Name")) 
  22.      { 
  23.          oXml.Read(); 
  24.          oItem.Name = oXml.Value; 
  25.      } 
  26.      else if (oXml.Name.Equals("Url")) 
  27.      { 
  28.          oXml.Read(); 
  29.          oItem.Url = oXml.Value; 
  30.      } 
  31.     } 

本日志由 Loveyuki 于 2010-01-25 11:38 发表到 技术新知 中,目前已经被浏览 564 次,评论 7 次;

作者添加了以下标签: 笔记C#

在 .NET 中如果引用了 System 命名空间那么我们就可以直接使用 Environment.TickCount 获得计算机启动后的毫秒数,但是如果直接把这个毫秒数输出给用户,用户很难直观的计算出到底启动了多少时间,所以我们一般都是格式化成一个可以直观看出结果的字符串以后再输出给用户,当然如果你有更好的方法欢迎给我留言。代码片段如下:

Int32 tickSecond = Environment.TickCount / 60000;
Int32 tickDay = tickSecond / 60 / 24;
Int32 tickHour = (tickSecond / 60) % 24;
Int32 tickMinute = tickSecond % 60;
String runTime = String.Format("{0} 天 {1} 小时 {2} 分", tickDay, tickHour, tickMinute);

另外提供一个小技巧就是 ASP.NET 2.0 中数据库配置文件可以使用 |DataDirectory| 来表示 App_Data 目录。

本日志由 Loveyuki 于 2008-01-07 20:58 发表到 学习笔记 中,目前已经被浏览 2190 次,评论 4 次;

作者添加了以下标签: C#

分享一个格式化文件大小的 C# 方法:

public static String FormatFileSize(Int64 fileSize)
{
    if (fileSize < 0)
    {
        throw new ArgumentOutOfRangeException("fileSize");
    }
    else if (fileSize >= 1024 * 1024 * 1024)
    {
        return string.Format("{0:########0.00} GB", ((Double)fileSize) / (1024 * 1024 * 1024));
    }
    else if (fileSize >= 1024 * 1024)
    {
        return string.Format("{0:####0.00} MB", ((Double)fileSize) / (1024 * 1024));
    }
    else if (fileSize >= 1024)
    {
        return string.Format("{0:####0.00} KB", ((Double)fileSize) / 1024);
    }
    else
    {
        return string.Format("{0} bytes", fileSize);
    }
}

本日志由 Loveyuki 于 2008-01-05 16:05 发表到 学习笔记 中,目前已经被浏览 3159 次,评论 7 次;

作者添加了以下标签: C#