Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL लिपियों को मान्य करने के लिए कोड

यदि आप एक उपकरण बना रहे हैं जो उपयोगकर्ता को हाथ से कुछ sql कोड दर्ज करने की अनुमति देता है और आप sql सर्वर पर निष्पादन से पहले C# कोड का उपयोग करके दर्ज किए गए कोड को मान्य करना चाहते हैं, तो आप इस तरह की एक विधि बना सकते हैं:

using Microsoft.Data.Schema.ScriptDom;
using Microsoft.Data.Schema.ScriptDom.Sql;

public class SqlParser
{
        public List<string> Parse(string sql)
        {
            TSql100Parser parser = new TSql100Parser(false);
            IScriptFragment fragment;
            IList<ParseError> errors;
            fragment = parser.Parse(new StringReader(sql), out errors);
            if (errors != null && errors.Count > 0)
            {
                List<string> errorList = new List<string>();
                foreach (var error in errors)
                {
                    errorList.Add(error.Message);
                }
                return errorList;
            }
            return null;
        }
}

2018 और नए डेटाबेस संस्करणों के अनुसार, यह नया संस्करण हो सकता है:

using Microsoft.SqlServer.TransactSql.ScriptDom;

(एनपीएम के साथ डाउनलोड करें:पीएम> इंस्टाल-पैकेज Microsoft.SqlServer.TransactSql.ScriptDom -Version 14.0.3811.1)

public bool IsSQLQueryValid(string sql, out List<string> errors)
{
    errors = new List<string>();
    TSql140Parser parser = new TSql140Parser(false);
    TSqlFragment fragment;
    IList<ParseError> parseErrors;

    using (TextReader reader = new StringReader(sql))
    {
        fragment = parser.Parse(reader, out parseErrors);
        if (parseErrors != null && parseErrors.Count > 0)
        {
            errors = parseErrors.Select(e => e.Message).ToList();
            return false;
        }
    }
    return true;
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर डेटाबेस में सभी संग्रहीत कार्यविधियों को सूचीबद्ध करने के 3 तरीके

  2. SQL सर्वर अलगाव स्तर:एक श्रृंखला

  3. .NET 4:वेब में अन्य असेंबली में ईडीएमएक्स फ़ाइल को कैसे कॉन्फ़िगर करें

  4. मैं एकाधिक कॉलम में डुप्लीकेट कैसे ढूंढूं?

  5. क्या MS-SQL AND/OR सशर्त है (शॉर्ट-सर्किट मूल्यांकन करें)?