there is no 通用数据库访问组件, you have to write your ownyou could look into the SQLHelp suggested by edobnet(oоОoоО):The Data Access Application Block for .NET
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Xml;
using System.Configuration;
using System.Data.SqlTypes;
using System.Data.OracleClient;
/// <summary>
/// NlinkDb 的摘要说明。
/// </summary>
public class LinkDb
{
//类构造过程
#region
/// <summary>
/// 数据库连接对象
/// </summary>
//ORACLE连接对象
private OracleConnection oraConnection;
// //SQL SERVER连接对象
// private SqlConnection sqlConnection;
/// <summary>
/// 数据库连接字符串
/// </summary>
private string linkString = ConfigurationSettings.AppSettings["ORACLELinkString"];
/// <summary>
/// 默认的构造函数
/// </summary>
// public NlinkDb()
// {
// //
// // TODO: 在此处添加构造函数逻辑
// //
// }
/// <summary>
/// 重载的析构函数
/// </summary>
// ~NlinkDb()
// {
// try
// {
// if (oleConnection.State == ConnectionState.Open)
// oleConnection.Close();
// }
// catch(Exception e)
// {
// throw new Exception(e.Message);
// }
// finally
// {
// oleConnection.Close();
// oleConnection.Dispose();
// }
// }
#endregion
//ORACLE数据库操作
#region
/// <summary>
/// 连接到ORACLE服务器
/// </summary>
/// <returns>连接成功返回true</returns>
public bool LinkOracleDB()
{
//
bool returnFlag = true;
try
{
oraConnection = new OracleConnection(linkString);
oraConnection.Open();
}
catch(Exception e)
{
returnFlag = false;
throw new Exception(e.Message);
}
finally
{
oraConnection.Close();
}
return returnFlag;
}
/// <summary>
/// 取得ORACLE的连接字符串
/// </summary>
/// <returns>返回当前连接的连接字符串</returns>
public string GetORACLEConnectString()
{
return this.oraConnection.ConnectionString;
} /// <summary>
/// ORACLE执行指定的无返回SQL操作
/// </summary>
/// <param name="querySQL">要执行的SQL字符串</param>
public int OracleExecuteNonQuery(string querySQL)
{
int effRow = 0;
try
{
this.LinkOracleDB();
OracleCommand myCommand = new OracleCommand(querySQL, oraConnection);
effRow = myCommand.ExecuteNonQuery(); }
catch(Exception e)
{
throw new Exception(e.Message); }
finally
{
oraConnection.Close();
}
return effRow;
} /// <summary>
/// Oracle执行指定的返回object对象的SQL操作
/// </summary>
/// <param name="querySQL">要执行的SQL字符串</param>
/// <returns>查询返回object对象</returns>
public object OracleExecuteScalar(string querySQL)
{
object obj = null;
try
{
this.LinkOracleDB();
OracleCommand myCommand = new OracleCommand(querySQL, oraConnection);
obj = myCommand.ExecuteScalar();
}
catch(Exception e)
{
throw new Exception(e.Message);
}
finally
{
oraConnection.Close();
}
return obj;
}
/// <summary>
/// Oracle执行指定的返回DatSet对象的SQL操作
/// </summary>
/// <param name="querySQL">要执行的SQL字符串</param>
/// <returns>查询返回DatSet对象</returns>
public DataSet OracleExecuteSQL(string querySQL)
{
DataSet ds = null;
try
{
this.LinkOracleDB();
OracleDataAdapter oraDataAdapter = new OracleDataAdapter(querySQL,oraConnection);
ds = new DataSet();
oraDataAdapter.Fill(ds);
}
catch(Exception e)
{
throw new Exception(e.Message);
}
finally
{
oraConnection.Close();
}
return ds;
}
/// <summary>
/// 重载方法执行指定的返回DatSet对象的SQL操作
/// </summary>
/// <param name="querySQL">要执行的SQL字符串</param>
/// <param name="srcTableName">数据集中的原表名</param>
/// <returns>查询返回DatSet对象</returns>
public DataSet OracleExecuteSQL(string querySQL,string srcTableName)
{
DataSet ds = null;
try
{
this.LinkOracleDB();
OracleDataAdapter oraDataAdapter = new OracleDataAdapter(querySQL,oraConnection);
ds = new DataSet();
oraDataAdapter.Fill(ds);
}
catch(Exception e)
{
throw new Exception(e.Message);
}
finally
{
oraConnection.Close();
}
return ds;
}
/// <summary>
/// 重载方法执行指定的返回DatSet对象的SQL操作
/// </summary>
/// <param name="querySQL">要执行的SQL字符串</param>
/// <param name="srcTableName">数据集中的原表名</param>
/// <param name="startRecord">从0开始的记录号</param>
/// <param name="maxRecords">要查询的最大记录数</param>
/// <returns>查询返回DatSet对象</returns>
public DataSet OracleExecuteSQL(string querySQL,string srcTableName,int startRecord,int maxRecords)
{
DataSet ds = null;
try
{
this.LinkOracleDB();
OracleDataAdapter oraDataAdapter = new OracleDataAdapter(querySQL,oraConnection);
ds = new DataSet();
oraDataAdapter.Fill(ds,startRecord,maxRecords,srcTableName);
if(ds.Tables[0].Rows.Count==0) ds=null;
}
catch(Exception e)
{
throw new Exception(e.Message);
}
finally
{
oraConnection.Close();
}
return ds;
} /// <summary>
/// ORACLE执行指定的无返回带查询参数的SQL操作
/// </summary>
/// <param name="querySQL">要执行的SQL字符串</param>
/// <param name="asParm">参数数组</param>
/// <param name="asCols"></param>
/// <returns>成功返回1</returns>
public int OracleExecuteCommandNonQuery(string querySQL,Object[] asParm,int asCols)
{
int effRow = 0;int i;
try
{
this.LinkOracleDB();
OracleCommand myCommand = new OracleCommand(querySQL, oraConnection); if(asCols>0)
{
OracleParameter[] paramData = new OracleParameter[asCols]; for(i=0;i<asCols;i++)
{ if(asParm[i].GetType()==typeof(string))
{
paramData[i]=new OracleParameter(":"+i, OracleType.VarChar);
paramData[i].Value = asParm[i].ToString().Trim(); }
else if(asParm[i].GetType()==typeof(long))
{
paramData[i]=new OracleParameter( ":"+i, OracleType.Int32);
paramData[i].Value = (long)asParm[i];
}
else if(asParm[i].GetType()==typeof(double) || asParm[i].GetType()==typeof(float))
{
paramData[i]=new OracleParameter( ":"+i, OracleType.Float);
paramData[i].Value = (double)asParm[i];
} else if(asParm[i].GetType()==typeof(OracleType.Blob))
{
paramData[i]=new OracleParameter(":"+i,asParm[i]);
paramData[i].IsNullable=true;
}
myCommand.Parameters.Add(paramData[i]);
}
}
myCommand.CommandType = CommandType.Text;
effRow = myCommand.ExecuteNonQuery(); }
catch(Exception eX)
{
throw new Exception(eX.Message);
}
finally
{
oraConnection.Close();
}
return effRow;
}
/// <summary>
/// ORACLE执行指定的无返回带图片数据的SQL操作
/// </summary>
/// <param name="querySQL">要执行的SQL字符串</param>
/// <param name="asParm">图片的数据</param>
/// <returns></returns>
public int OracleExecuteCommandNonQuery(string querySQL,byte[] asParm)
{
int effRow = 0;
try
{ this.LinkOracleDB();
OracleCommand myCommand = new OracleCommand(querySQL, oraConnection); OracleParameter paramData = new OracleParameter( ":img", OracleType.Blob); // 图片的数据 paramData.Value = asParm;
myCommand.Parameters.Add(paramData);
myCommand.CommandType = CommandType.Text;
effRow = myCommand.ExecuteNonQuery(); }
catch(Exception eX)
{
throw new Exception(eX.Message);
}
finally
{
oraConnection.Close();
}
return effRow;
}
#endregion
}
}
[email protected]