Frage

Ich versuche, eine Verbindung zu sybase ASE 15, und rufen Sie eine SP, die einige DML.Ich Frage mich, ob jemand irgendwelche Hinweise, um eine sybase-helper-Klasse Analog zu SQLhelper.cs oder wenn jemand irgendwelche Hinweise auf irgendwelche blog / sample-code.

Schließlich werde ich die Migration die Lösung für SQl Server 2008 R2 (paar Monate ab jetzt) also ich möchte eine generische Implementierung, die verwendet werden können, ohne zu viel ändern, auch nach der migration.

War es hilfreich?

Lösung

public class SybaseDBHelper : ISybaseDBHelper
    {
        private AseConnection conn;
        private AseCommand cmd;
        private AseDataAdapter adapter;
        private DataSet outDS;
        protected static readonly ILog _logger = LogManager.GetLogger(typeof (SybaseDBHelper));

        #region InsertData
        public int InsertDataUsingStoredProcedure(string storedProcedureName, DatabaseEnum dbName, List<AseParameter> parameters)
        {
            var connFactory = new ConnectionFactory();
            int _errorCode = 0;
            string connectionString = connFactory.GetConnectionString(dbName);
            using (conn = connFactory.GetAseConnectionString(connectionString))
            {
                try
                {
                    conn.Open();
                    if (conn.State == ConnectionState.Open)
                    {
                        using (cmd = conn.CreateCommand())
                        {
                            cmd.CommandType = CommandType.StoredProcedure;
                            cmd.CommandText = storedProcedureName;
                            if (parameters != null )
                            {
                                foreach (AseParameter param in parameters)
                                {
                                    cmd.Parameters.Add(param);
                                }
                            }
                           _errorCode = cmd.ExecuteNonQuery();
                        }
                    }
                }
                catch (AseException ex)
                {
                    _logger.ErrorFormat("Error Inserting Data into Database {0}", ex);
                    throw;
                }
                finally
                {
                    conn.Close();
                }
            }
            return _errorCode;
        }

        #endregion

        #region IDisposable Members

        public void Dispose()
        {
            Dispose(true);
        }

        protected virtual void Dispose(bool disposing)
        {
            if (disposing)
            {
                conn.Dispose();
                conn = null;
                GC.SuppressFinalize(this);
            }
        }

        #endregion

} }

Schnittstelle

using System;
using System.Collections.Generic;
using System.Data;
using LiabilitiesMI.Common.DataObjects;
using Sybase.Data.AseClient;

namespace LiabilitiesMI.Common.Interfaces
{
    public interface ISybaseDBHelper : IDisposable
    {
        DataSet GetDataUsingStoredProcedure(string storedProcedureName, DatabaseEnum dbName, List<AseParameter> parameters);
        int InsertDataUsingStoredProcedure(string storedProcedureName, DatabaseEnum dbName, List<AseParameter> parameters);
    }
}

--Aufruf, der auf diese Weise berufen sich auf die expliciti garbage Collection

using (ISybaseDBHelper _DBHelper = ObjectFactory.GetDBHelper())
            {
                _DBHelper.InsertDataUsingStoredProcedure("usp_load_fx_spot_rate_into_staging", DatabaseEnum.Staging, input);
            }

Andere Tipps

  1. Wenn Sie die Entwicklung von SQL für Sybase - (oder MS) sind Sie am besten aus, indem Sie ein Entwickler-tool, wie SQLProgrammer oder Rapid SQL.Es verbessert die Produktivität durch den Wegfall der manuellen Arbeit.

  2. Wenn Sie das nicht haben, dann sind die Dienstprogramme, die kommen mit Sybase sind sehr angemessen, aber Sie müssen lernen, den Katalog benutzen.Isql für ein Charakter-Schnittstelle oder DBISQL bietet Befehl und ResultSet windows in einer GUI-Schnittstelle.

  3. Sobald Sie eine session öffnen, die auf dem server, geben Sie den folgenden SQL-Befehle.Diese ausführen von gespeicherten Systemprozeduren, befragen Sie den Katalog:

exec sp_help (object_name) -- einschließlich Tabellen und sprocs

exec sp_helptext

Es sind 30 solcher interrogatories.

Ich nehme an, Sie erkennen, dass sprocs können viel mehr tun, als einfach EINFÜGEN;behandeln Sie verschiedene Datentypen als Parameter, und dass Ihre geposteten code ist nur ein einfaches Beispiel, nicht die volle Gegenleistung.In der Regel, damit gespeicherte Prozeduren, die für die Ausführung von Java-apps, die wir benötigen, um eine wrapper (auf der Seite SQL).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top