巧用C# Split()函數擷取SQL語句中操作欄位

來源:互聯網
上載者:User

標籤:c# split函數   擷取sql語句中操作欄位   

這是前天工作時要求的,將SQL語句的操作欄位擷取出來掛在樹節點上,感覺這個函數以後還有可能會用到,特此總結一下,函數中沒有實現Select *的操作,只要添加判斷條件即可。

工具函數:Split()函數:通過字元分割字串為一個string類型的一維數組。

String.Split 方法有6個重載函數:1) public string[] Split(params char[] separator)        返回的字串數組包含此執行個體中的子字串2) public string[] Split(char[] separator, int count)      返回的字串數組包含此執行個體中的子字串。 參數指定返回的子字串的最大個數。
3) public string[] Split(char[] separator, StringSplitOptions options)       返回的字串數組包含此字串中的子字串。 參數指定是否返回空數組元素。
4) public string[] Split(string[] separator, StringSplitOptions options)      返回的字串數組包含此字串中的子字串。 參數指定是否返回空數組元素。
5) public string[] Split(char[] separator, int count, StringSplitOptions options)   返回的字串數組包含此字串中的子字串(由指定 Unicode 字元數組的元素分隔)。 參數指定要返回子字串的最大數量,以及是否返回空數組元素。
6) public string[] Split(string[] separator, int count, StringSplitOptions options)  返回的字串數組包含此字串中的子字串(由指定字串數組的元素分隔)。 參數指定要返回子字串的最大數量,以及是否返回空數組元素。

註:StringSplitOptions 為一個枚舉類型,有兩個成員:(1)None:返回值包括含有Null 字元串的數組元素;(2)RemoveEmptyEntries:返回值不包括含有Null 字元串的數組元素  。具體例子可到網上找相關代碼。思路:將字串通過Split()函數進行分割為字串數組,然後對字串資料進行判斷即可。效果:
代碼:
         /// <summary>        /// 擷取查詢欄位代碼        /// </summary>        /// <param name="sOperationSQL"></param>        /// <returns></returns>        private string GetSQLOperateField(string sOperationSQL)        {            if (string.IsNullOrEmpty(sOperationSQL))            {                return string.Empty;            }            string sAppendNodeText = string.Empty;            sOperationSQL = sOperationSQL.Trim();            string[] strList = null;            string sKey = sOperationSQL.Substring(0, 6);            switch (sKey.ToUpper())            {                case "SELECT":                    {                        strList = sOperationSQL.Split(new char[2] { ' ', ',' });                        for (int i = 1; i < strList.Length; i++)                        {                            if (strList[i].ToUpper().Equals("FROM"))                            {                                break;                            }                            if (!string.IsNullOrEmpty(strList[i]))                            {                                sAppendNodeText += strList[i] + ",";                            }                        }                        if (sAppendNodeText.Length > 1)                        {                            sAppendNodeText = sAppendNodeText.Substring(0, sAppendNodeText.Length - 1);                        }                        sAppendNodeText = "SELECT【" + sAppendNodeText + "】";                        break;                    }                case "INSERT":                    {                        strList = sOperationSQL.Trim().Split(new char[5] { ' ', ',', '(', ')', '\'' });                        for (int i = 0; i < strList.Length; i++)                        {                            if (strList[i].ToUpper().Equals("WHERE"))                            {                                break;                            }                            if (!string.IsNullOrEmpty(strList[i]) && strList[i].IndexOf("=") > -1 && strList[i].Length > 1)                            {                                int iIndex = strList[i].IndexOf("=");                                if (iIndex > 0)                                {                                    sAppendNodeText += strList[i].Substring(0, iIndex) + ",";                                }                            }                            if (!string.IsNullOrEmpty(strList[i]) && strList[i].IndexOf("=", 0, 1) > -1)                            {                                sAppendNodeText += strList[i - 1] + ",";                            }                        }                        if (sAppendNodeText.Length > 1)                        {                            sAppendNodeText = sAppendNodeText.Substring(0, sAppendNodeText.Length - 1);                        }                        sAppendNodeText = "INSERT【" + sAppendNodeText + "】";                        break;                    }                case "UPDATE":                    {                        strList = sOperationSQL.Trim().Split(new char[2] { ' ', ',' });                        for (int i = 0; i < strList.Length; i++)                        {                            if (strList[i].ToUpper().Equals("WHERE"))                            {                                break;                            }                            if (!string.IsNullOrEmpty(strList[i]) && strList[i].IndexOf("=") > -1 && strList[i].Length > 1)                            {                                int iIndex = strList[i].IndexOf("=");                                if (iIndex > 0)                                {                                    sAppendNodeText += strList[i].Substring(0, iIndex) + ",";                                }                            }                            if (!string.IsNullOrEmpty(strList[i]) && strList[i].IndexOf("=", 0, 1) > -1)                            {                                sAppendNodeText += strList[i - 1] + ",";                            }                        }                        if (sAppendNodeText.Length > 1)                        {                            sAppendNodeText = sAppendNodeText.Substring(0, sAppendNodeText.Length - 1);                        }                        sAppendNodeText = "UPDATE【" + sAppendNodeText + "】";                        break;                    }                case "DELETE":                    {                        strList = sOperationSQL.Trim().Split(new char[2] { ' ', ',' });                        for (int i = 0; i < strList.Length; i++)                        {                            if (!string.IsNullOrEmpty(strList[i]) && strList[i].IndexOf("=") > -1 && strList[i].Length > 1)                            {                                int iIndex = strList[i].IndexOf("=");                                if (iIndex > 0)                                {                                    sAppendNodeText += strList[i].Substring(0, iIndex) + ",";                                }                            }                            if (!string.IsNullOrEmpty(strList[i]) && strList[i].IndexOf("=", 0, 1) > -1)                            {                                sAppendNodeText += strList[i - 1] + ",";                            }                        }                        if (sAppendNodeText.Length > 1)                        {                            sAppendNodeText = sAppendNodeText.Substring(0, sAppendNodeText.Length - 1);                        }                        sAppendNodeText = "DELETE【" + sAppendNodeText + "】";                        break;                    }            }            return sAppendNodeText;        }

測試案例:
            string sSelSQL = "SELECT BSM FROM STUDENT";            string sResult = GetSQLOperateField(sSelSQL);            this.treeList1.AppendNode(new object[] { sResult }, null);            string sUpdata = "UPDATE STUDENT SET NAME='JAMES'";            sResult = GetSQLOperateField(sUpdata);            this.treeList1.AppendNode(new object[] { sResult }, null);            string sInsertSQL = "INSERT INTO STUDENT NAME='LUCY',ID='2001' WHERE SCORE='95'";            //string sInsertSQL = "INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')";      //暫不支援這種寫法            sResult = GetSQLOperateField(sInsertSQL);            this.treeList1.AppendNode(new object[] { sResult }, null);

很簡單,有待完善。

巧用C# Split()函數擷取SQL語句中操作欄位

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.