C# SybaseHelper类?
我正在尝试连接到sybase ASE 15并调用执行DML的SP。我想知道是否有人有指向类似于SQLhelper.cs的sybase helper类的指针,或者有人有指向任何博客/示例代码的指针 最终,我将把解决方案迁移到SQLServer2008R2(几个月后),所以我想创建一个通用的实现,即使在迁移之后也可以不做太多更改地使用它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
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
我想你已经意识到存储过程不仅仅是简单的插入;将各种数据类型作为参数处理,并且您发布的代码只是一个简单的示例,而不是完整的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);
}