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

DbCommand और पैरामीटरयुक्त SQL, ORACLE बनाम SQL सर्वर

मैंने इस प्रश्न का उत्तर बहुत पहले स्वीकार कर लिया था, लेकिन किसी कारण से वह उत्तर अब यहाँ नहीं है... इसलिए मुझे लगता है कि मुझे अपने प्रश्न का उत्तर देने की आवश्यकता है।

मैंने जो किया वह एक परमबिल्डर वर्ग बनाना था:

class ParamBuilder
{
    private DbProviderFactory m_factory;
    private DbCommandBuilder m_builder;
    private string m_parameterMarkerFormat;
    public ParamBuilder(DbProviderFactory factory) : this(factory, null)
    {
    }

    public ParamBuilder(DbProviderFactory factory, DbConnection source)
    {
        m_factory = factory;
        m_builder = m_factory.CreateCommandBuilder();
        if (source != null)
        {
            using (DataTable tbl =
                source.GetSchema(DbMetaDataCollectionNames.DataSourceInformation))
            {
                m_parameterMarkerFormat =  
                    tbl.Rows[0][DbMetaDataColumnNames.ParameterMarkerFormat] as string;
            }
        }
        if (String.IsNullOrEmpty(m_parameterMarkerFormat))
            m_parameterMarkerFormat = "{0}";
    }

    public DbParameter CreateParameter(string parameterName, 
        out string parameterMarker)
    {
        DbParameter param = m_factory.CreateParameter();
        param.ParameterName =  
            (string)typeof(DbCommandBuilder).InvokeMember("GetParameterName",
                System.Reflection.BindingFlags.Instance |
                System.Reflection.BindingFlags.InvokeMethod |
                System.Reflection.BindingFlags.NonPublic, null, m_builder, 
                new object[] { parameterName });

        parameterMarker = 
            String.Format(System.Globalization.CultureInfo.InvariantCulture, 
            m_parameterMarkerFormat, param.ParameterName);

        return param;
    }

}

मैं परमबिल्डर प्रकार का सदस्य चर बनाता हूं:

private readonly ParamBuilder m_ParamBuilder;

फिर जिस विधि में मैं पैरामीटर का उपयोग करता हूं, मैं उसका उपयोग इस प्रकार करता हूं:

...
string paramMarker;
DbParameter param = m_ParamBuilder.CreateParameter(destination[i].ColumnName, 
    out paramMarker);
sql.Append(paramMarker);

param.Direction = ParameterDirection.Input;
param.Value = source[i];
Cmd.Parameters.Add(param);
...


  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 सिंटैक्स चेकर

  2. java.lang.UnsupportedOperationException:org.hibernate.dialect.Oracle10gDialect संग्रहित प्रक्रियाओं के माध्यम से परिणामसेट का समर्थन नहीं करता है

  3. क्या Oracle DML table_reference के लिए कोई पार्सर मौजूद है?

  4. पैकेज निष्पादित करते समय त्रुटि आ रही है

  5. Oracle:अद्यतन खंड के साथ CTE का उपयोग करना