Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SybaseHelper类?_C#_Database_Sap Ase - Fatal编程技术网

C# SybaseHelper类?

C# SybaseHelper类?,c#,database,sap-ase,C#,Database,Sap Ase,我正在尝试连接到sybase ASE 15并调用执行DML的SP。我想知道是否有人有指向类似于SQLhelper.cs的sybase helper类的指针,或者有人有指向任何博客/示例代码的指针 最终,我将把解决方案迁移到SQLServer2008R2(几个月后),所以我想创建一个通用的实现,即使在迁移之后也可以不做太多更改地使用它 public class SybaseDBHelper : ISybaseDBHelper { private AseConnection

我正在尝试连接到sybase ASE 15并调用执行DML的SP。我想知道是否有人有指向类似于SQLhelper.cs的sybase helper类的指针,或者有人有指向任何博客/示例代码的指针

最终,我将把解决方案迁移到SQLServer2008R2(几个月后),所以我想创建一个通用的实现,即使在迁移之后也可以不做太多更改地使用它

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
  • 如果您正在为Sybase(或MS)开发SQL,最好使用开发人员工具,如SQLProgrammer或Rapid SQL。它通过消除体力劳动提高了生产率

  • 如果您没有,那么Sybase附带的实用程序就足够了,但是您需要学习使用目录。isql用于字符界面,DBISQL在GUI界面中提供命令和结果集窗口

  • 在服务器上打开会话后,键入以下SQL命令。这些执行查询目录的系统存储过程:

  • exec sp_帮助(对象名称)——包括表和存储过程

    exec sp_帮助文本

    有30份这样的质询书


    我想你已经意识到存储过程不仅仅是简单的插入;将各种数据类型作为参数处理,并且您发布的代码只是一个简单的示例,而不是完整的quid。通常,为了从Java应用程序执行存储的过程,我们需要提供一个包装器(在SQL端)。

    最后,我成功地编写了我自己的DBHelper.cs,它将进入我的一个博客实体。我很快就会发布链接。我说的是一个C#helper类,用于从应用程序调用SPs。SQLHelper.cs是一个microsoft模式与实践C#类,我曾试图为sybase找到类似的东西,但最终编写了自己的。我知道所有这些。我对你们班没有意见。我给了你一些具体的建议,这些建议将提高你的工作效率,与此完全不同;这将减少你对它的依赖。您真的需要知道备选方案,并做出明智的选择(针对每个功能需求),而不是只有一种方法来执行所有功能需求。
    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);
        }
    }
    
    using (ISybaseDBHelper _DBHelper = ObjectFactory.GetDBHelper())
                {
                    _DBHelper.InsertDataUsingStoredProcedure("usp_load_fx_spot_rate_into_staging", DatabaseEnum.Staging, input);
                }