87 lines
2.7 KiB
C#
87 lines
2.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Reflection;
|
|
using System.Data.Common;
|
|
using CYQ.Data.Cache;
|
|
using System.IO;
|
|
|
|
namespace CYQ.Data
|
|
{
|
|
internal class SybaseDal : DbBase
|
|
{
|
|
public SybaseDal(ConnObject co)
|
|
: base(co)
|
|
{
|
|
|
|
}
|
|
internal static Assembly GetAssembly()
|
|
{
|
|
object ass = CacheManage.LocalInstance.Get("Sybase_Assembly");
|
|
if (ass == null)
|
|
{
|
|
try
|
|
{
|
|
string name = string.Empty;
|
|
if (File.Exists(AppConst.RunFolderPath + "Sybase.AdoNet2.AseClient.dll"))
|
|
{
|
|
name = "Sybase.AdoNet2.AseClient";
|
|
}
|
|
else if (File.Exists(AppConst.RunFolderPath + "Sybase.AdoNet4.AseClient.dll"))
|
|
{
|
|
name = "Sybase.AdoNet4.AseClient";
|
|
}
|
|
else
|
|
{
|
|
name = "Can't find the Sybase.AdoNet2.AseClient.dll";
|
|
Error.Throw(name);
|
|
}
|
|
ass = Assembly.Load(name);
|
|
CacheManage.LocalInstance.Set("Sybase_Assembly", ass, 10080);
|
|
}
|
|
catch (Exception err)
|
|
{
|
|
string errMsg = err.Message;
|
|
Error.Throw(errMsg);
|
|
}
|
|
}
|
|
return ass as Assembly;
|
|
}
|
|
protected override DbProviderFactory GetFactory(string providerName)
|
|
{
|
|
object factory = CacheManage.LocalInstance.Get("Sybase_Factory");
|
|
if (factory == null)
|
|
{
|
|
Assembly ass = GetAssembly();
|
|
factory = ass.CreateInstance("Sybase.Data.AseClient.AseClientFactory");
|
|
if (factory == null)
|
|
{
|
|
throw new System.Exception("Can't Create AseClientFactory in Sybase.AdoNet2.AseClient");
|
|
}
|
|
else
|
|
{
|
|
CacheManage.LocalInstance.Set("Sybase_Factory", factory, 10080);
|
|
}
|
|
|
|
}
|
|
return factory as DbProviderFactory;
|
|
|
|
}
|
|
|
|
protected override bool IsExistsDbName(string dbName)
|
|
{
|
|
try
|
|
{
|
|
IsAllowRecordSql = false;
|
|
bool result = ExeScalar("select 1 from master..sysdatabases where [name]='" + dbName + "'", false) != null;
|
|
IsAllowRecordSql = true;
|
|
return result;
|
|
}
|
|
catch
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|