当前位置:数据库 > SQLite >>

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

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


[csharp]
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 = "ToUpper", Arguments = 1, FuncType = FunctionType.Scalar)]
    public class ToUpper : SQLiteFunction
    {
        public override object Invoke(object[] args)
        {
            return args[0].ToString().ToUpper();
        }
    }
}

[csharp]
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); 
        } 
    } 

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)";
          }

 


结束。

 

补充:软件开发 , C# ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,