您的位置:首页 > 数据库

C# 注册并使用sqlite 自定义函数

2013-05-08 12:55 323 查看
1,sqlite 没有 ToUpper 的自带函数。 没关系,我们可以创建它;

2,sqlite 不能直接创建自定义函数,不能像 sql server中那样方便创建并使用。没关系,我们照样可以创建它,创建成功后,我们照样可以随心所欲(比如 批量更新等)。

效果:

            var ss = JonseTest.SqlLiteHelper.GetSingle(out sError, "select ToUpper('ABCcdsf')");   // ABCCDSF

            var ss2 = JonseTest.SqlLiteHelper.GetSingle(out sError, "select GetChinesePYChar('我a*%爱你中国')");   // Wa*%ANZG

             


方案:

step1: 创建类 ToUpper   和 GetChinesePYChar

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SQLite;

namespace MetroGuide
{
[SQLiteFunction(Name = "ToUpper", Arguments = 1, FuncType = FunctionType.Scalar)]
public class ToUpper : SQLiteFunction
{
public override object Invoke(object[] args)
{
return args[0].ToString().ToUpper();
}
}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SQLite;

namespace MetroGuide
{
[SQLiteFunction(Name = "GetChinesePYChar", Arguments = 1, FuncType = FunctionType.Scalar)]
public class GetChinesePYChar : SQLiteFunction
{
public override object Invoke(object[] args)
{
string sOrigion = args[0].ToString();
return Common.GetPYString(sOrigion);
}
}
}


step2:

            var ss = JonseTest.SqlLiteHelper.GetSingle(out sError, "select ToUpper('ABCcdsf')");   // ABCCDSF

            var ss2 = JonseTest.SqlLiteHelper.GetSingle(out sError, "select GetChinesePYChar('我a*%爱你中国')");   // Wa*%ANZG

step3:

           public static string ResetAllPointNameChinesePYChar()

          {

                 return "update tblLinePoint set ChinesePYChar=GetChinesePYChar(Name)";

          }

结束。

参考 :
http://blog.csdn.net/huanshanv20008/article/details/7635092
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: