#region using
namespace wis.base.data
{
/// <summary>
/// <table >
/// <tr><td><b>文 件 名</b>:dbobject.cs</td></tr>
/// <tr><td><b>功能描述</b>:數(shù)據(jù)層基類,提供對(duì)底層數(shù)據(jù)的基本操作</td></tr>
/// <tr><td><b>創(chuàng) 建 人</b>:夏春濤 [email protected] qq:23106676</td></tr>
/// <tr><td><b>創(chuàng)建時(shí)間</b>:2005-05-28 </td></tr>
/// </table>
/// </summary>
public class dbobject
{
#region 成員變量
/// <summary>
/// <table >
/// <tr><td><b>功能描述</b>:oracle數(shù)據(jù)連接對(duì)象</td></tr>
/// <tr><td><b>創(chuàng) 建 人</b>:夏春濤 </td></tr>
/// <tr><td><b>創(chuàng)建時(shí)間</b>:2005-05-28 </td></tr>
/// </table>
/// </summary>
protected oracleconnection connection;
/// <summary><table >
/// <tr><td><b>功能描述</b>:數(shù)據(jù)連接字符串</td></tr>
/// <tr><td><b>創(chuàng) 建 人</b>:夏春濤 </td></tr>
/// <tr><td><b>創(chuàng)建時(shí)間</b>:2005-05-28 </td></tr>
/// </table></summary>
private string connectionstring;
#endregion
#region 構(gòu)造函數(shù)
/// <summary><table >
/// <tr><td><b>功能描述</b>:構(gòu)造函數(shù),使用配置文件中的默認(rèn)數(shù)據(jù)連接字符串connectionstring,初始化數(shù)據(jù)連接對(duì)象 </td></tr>
/// <tr><td><b>創(chuàng) 建 人</b>:夏春濤 </td></tr>
/// <tr><td><b>創(chuàng)建時(shí)間</b>:2005-05-28 </td></tr>
/// </table></summary>
public dbobject()
{
connectionstring = configurationsettings.appsettings.get("connectionstring");//從web.config中取得的連接字符串
connection = new oracleconnection(connectionstring);
}
/// <summary><table >
/// <tr><td><b>功能描述</b>:構(gòu)造函數(shù),根據(jù)指定的數(shù)據(jù)連接字符串,初始化數(shù)據(jù)連接對(duì)象</td></tr>
/// <tr><td><b>創(chuàng) 建 人</b>:夏春濤 </td></tr>
/// <tr><td><b>創(chuàng)建時(shí)間</b>:2005-05-28 </td></tr>
/// </table></summary>
/// <param name="newconnectionstring">數(shù)據(jù)連接字符串</param>
public dbobject( string newconnectionstring )
{
connectionstring = newconnectionstring;
connection = new oracleconnection( connectionstring );
}
#endregion
#region 私有方法
/// <summary><table >
/// <tr><td><b>功能描述</b>:創(chuàng)建一個(gè)oraclecommand對(duì)象,用于生成oracledatareader </td></tr>
/// <tr><td><b>創(chuàng) 建 人</b>:夏春濤 </td></tr>
/// <tr><td><b>創(chuàng)建時(shí)間</b>:2005-05-28 </td></tr>
/// </table></summary>
/// <param name="storedprocname">存儲(chǔ)過(guò)程名稱</param>
/// <param name="parameters">存儲(chǔ)過(guò)程的參數(shù)對(duì)象列表(數(shù)組)</param>
/// <returns>oraclecommand對(duì)象</returns>
private oraclecommand buildcommand(string storedprocname, idataparameter[] parameters)
{
oraclecommand command = new oraclecommand( storedprocname, connection );
command.commandtype = commandtype.storedprocedure;
foreach (oracleparameter parameter in parameters)
{
command.parameters.add( parameter );
}
return command;
}
#endregion
#region 運(yùn)行存儲(chǔ)過(guò)程
/// <summary>
/// <table >
/// <tr><td><b>功能描述</b>:運(yùn)行存儲(chǔ)過(guò)程,獲取影響行數(shù),返回存儲(chǔ)過(guò)程運(yùn)行結(jié)果 </td></tr>
/// <tr><td><b>創(chuàng) 建 人</b>:夏春濤 </td></tr>
/// <tr><td><b>創(chuàng)建時(shí)間</b>:2005-05-28 </td></tr>
/// </table>
/// </summary>
/// <param name="storedprocname">存儲(chǔ)過(guò)程名稱</param>
/// <param name="parameters">存儲(chǔ)過(guò)程的參數(shù)對(duì)象列表(數(shù)組)</param>
/// <param name="rowsaffected">出參:執(zhí)行存儲(chǔ)過(guò)程所影響的記錄行數(shù)</param>
/// <returns>存儲(chǔ)過(guò)程的運(yùn)行結(jié)果</returns>
public object runprocedure(string storedprocname, idataparameter[] parameters, out int rowsaffected )
{
object result;
//if(connection.state.tostring() == "closed") connection.open();
connection.open();
oraclecommand command = buildcommand( storedprocname, parameters );
rowsaffected = command.executenonquery();
//如果有"returnvalue"參數(shù)則返回值,否則返回null
bool blnhasreturn = false;
for (int i=0;i<parameters.length;i++)
{
if (parameters[i].direction == parameterdirection.returnvalue)
{
blnhasreturn = true;
break;
}
}
if (blnhasreturn)
result = command.parameters["returnvalue"].value;
else
result = null;
connection.close();
return result;
}
/// <summary><table >
/// <tr><td><b>功能描述</b>:運(yùn)行存儲(chǔ)過(guò)程,返回產(chǎn)生的oracledatareader對(duì)象 </td></tr>
/// <tr><td><b>創(chuàng) 建 人</b>:夏春濤 </td></tr>
/// <tr><td><b>創(chuàng)建時(shí)間</b>:2005-05-28 </td></tr>
/// </table></summary>
/// <param name="storedprocname">存儲(chǔ)過(guò)程名稱</param>
/// <param name="parameters">存儲(chǔ)過(guò)程的參數(shù)對(duì)象列表(數(shù)組)</param>
/// <returns>oracledatareader對(duì)象</returns>
public oracledatareader runprocedure(string storedprocname, idataparameter[] parameters )
{
oracledatareader returnreader;
connection.open();
oraclecommand command = buildcommand( storedprocname, parameters );
command.commandtype = commandtype.storedprocedure;
returnreader = command.executereader();
//connection.close();
return returnreader;
}
/// <summary><table >
/// <tr><td><b>功能描述</b>:運(yùn)行存儲(chǔ)過(guò)程,創(chuàng)建一個(gè)dataset對(duì)象,
/// 將運(yùn)行結(jié)果存入指定的datatable中,返回dataset對(duì)象 </td></tr>
/// <tr><td><b>創(chuàng) 建 人</b>:夏春濤 </td></tr>
/// <tr><td><b>創(chuàng)建時(shí)間</b>:2005-05-28 </td></tr>
/// </table></summary>
/// <param name="storedprocname">存儲(chǔ)過(guò)程名稱</param>
/// <param name="parameters">存儲(chǔ)過(guò)程的參數(shù)對(duì)象列表(數(shù)組)</param>
/// <param name="tablename">數(shù)據(jù)表名稱</param>
/// <returns>dataset對(duì)象</returns>
public dataset runprocedure(string storedprocname, idataparameter[] parameters, string tablename )
{
dataset dataset = new dataset();
connection.open();
oracledataadapter sqlda = new oracledataadapter();
sqlda.selectcommand = buildcommand( storedprocname, parameters );
sqlda.fill( dataset, tablename );
connection.close();
return dataset;
}
/// <summary><table >
/// <tr><td><b>功能描述</b>:運(yùn)行存儲(chǔ)過(guò)程,將運(yùn)行結(jié)果存入已有dataset對(duì)象的指定表中,無(wú)返回值 </td></tr>
/// <tr><td><b>創(chuàng) 建 人</b>:夏春濤 </td></tr>
/// <tr><td><b>創(chuàng)建時(shí)間</b>:2005-05-28 </td></tr>
/// </table></summary>
/// <param name="storedprocname">存儲(chǔ)過(guò)程名稱</param>
/// <param name="parameters">存儲(chǔ)過(guò)程的參數(shù)對(duì)象列表(數(shù)組)</param>
/// <param name="dataset">dataset對(duì)象</param>
/// <param name="tablename">數(shù)據(jù)表名稱</param>
public void runprocedure(string storedprocname, idataparameter[] parameters, dataset dataset, string tablename )
{
connection.open();
oracledataadapter sqlda = new oracledataadapter();
sqlda.selectcommand = buildcommand( storedprocname, parameters );
sqlda.fill( dataset, tablename );
connection.close();
}
#endregion
#region 運(yùn)行sql語(yǔ)句
/// <summary><table >
/// <tr><td><b>功能描述</b>:運(yùn)行與寫數(shù)據(jù)庫(kù)相關(guān)的sql語(yǔ)句,返回影響行數(shù) </td></tr>
/// <tr><td><b>創(chuàng) 建 人</b>:夏春濤 </td></tr>
/// <tr><td><b>創(chuàng)建時(shí)間</b>:2005-05-28 </td></tr>
/// </table></summary>
/// <param name="sqlstring">sql語(yǔ)句</param>
/// <returns>影響行數(shù)</returns>
public int execnonquery(string sqlstring)
{
int rowaffected;
//if(connection.state.tostring() == "closed") connection.open();
connection.open();
oraclecommand command = new oraclecommand( sqlstring, connection );
rowaffected = command.executenonquery();
connection.close();
return rowaffected;
}
/// <summary><table >
/// <tr><td><b>功能描述</b>:運(yùn)行sql語(yǔ)句,返回oracledatareader對(duì)象 </td></tr>
/// <tr><td><b>創(chuàng) 建 人</b>:夏春濤 </td></tr>
/// <tr><td><b>創(chuàng)建時(shí)間</b>:2005-05-28 </td></tr>
/// </table></summary>
/// <param name="sqlstring">sql語(yǔ)句</param>
/// <returns>sqldatareader對(duì)象</returns>
public oracledatareader execsqlstring(string sqlstring)
{
oracledatareader returnreader;
//if(connection.state.tostring() == "closed") connection.open();
connection.open();
oraclecommand command = new oraclecommand( sqlstring, connection );
returnreader = command.executereader();
//connection.close();
return returnreader;
}
/// <summary><table >
/// <tr><td><b>功能描述</b>:運(yùn)行sql語(yǔ)句,返回dataset對(duì)象 </td></tr>
/// <tr><td><b>創(chuàng) 建 人</b>:夏春濤 </td></tr>
/// <tr><td><b>創(chuàng)建時(shí)間</b>:2005-05-28 </td></tr>
/// </table></summary>
/// <param name="string">sql語(yǔ)句</param>
/// <param name="tablename">數(shù)據(jù)表名稱</param>
/// <returns>dataset對(duì)象</returns>
public dataset execsqlstring(string sqlstring, string tablename )
{
dataset dataset = new dataset();
//if (connection.state.tostring() == "closed") connection.open();
connection.open();
oracledataadapter sqlda = new oracledataadapter();
sqlda.selectcommand = new oraclecommand( sqlstring, connection );
sqlda.fill( dataset, tablename );
connection.close();
return dataset;
}
/// <summary><table >
/// <tr><td><b>功能描述</b>:運(yùn)行sql語(yǔ)句,將運(yùn)行結(jié)果存入已有dataset對(duì)象的指定表中,無(wú)返回值 </td></tr>
/// <tr><td><b>創(chuàng) 建 人</b>:夏春濤 </td></tr>
/// <tr><td><b>創(chuàng)建時(shí)間</b>:2005-05-28 </td></tr>
/// </table></summary>
/// <param name="sqlstring">sql語(yǔ)句</param>
/// <param name="dataset">dataset對(duì)象</param>
/// <param name="tablename">數(shù)據(jù)表名稱</param>
public void execsqlstring(string sqlstring, dataset dataset, string tablename )
{
//if (connection.state.tostring() == "closed") connection.open();
connection.open();
oracledataadapter sqlda = new oracledataadapter();
sqlda.selectcommand = new oraclecommand( sqlstring, connection );
sqlda.fill( dataset, tablename );
connection.close();
}
/// <summary><table >
/// <tr><td><b>功能描述</b>:運(yùn)行sql語(yǔ)句,返回查詢結(jié)果的第一行的第一列,忽略其它行或列 </td></tr>
/// <tr><td><b>創(chuàng) 建 人</b>:夏春濤 </td></tr>
/// <tr><td><b>創(chuàng)建時(shí)間</b>:2005-05-28 </td></tr>
/// </table></summary>
/// <param name="sqlstring">sql語(yǔ)句</param>
/// <returns>影響行數(shù)</returns>
public object execscalar(string sqlstring)
{
object returnscalar;
//if (connection.state.tostring() == "closed") connection.open();
connection.open();
oraclecommand command = new oraclecommand( sqlstring, connection );
returnscalar = command.executescalar();
//connection.close();
return returnscalar;
}
#endregion
#region 關(guān)閉數(shù)據(jù)連接
/// <summary><table >
/// <tr><td><b>功能描述</b>:關(guān)閉數(shù)據(jù)連接 </td></tr>
/// <tr><td><b>創(chuàng) 建 人</b>:夏春濤 </td></tr>
/// <tr><td><b>創(chuàng)建時(shí)間</b>:2005-05-28 </td></tr>
/// </table></summary>
public void close()
{
if(connection.state.tostring() == "open")
connection.close();
}
#endregion
#region 析構(gòu)函數(shù)
/// <summary><table >
/// <tr><td><b>功能描述</b>:析構(gòu)函數(shù),善后處理,釋放數(shù)據(jù)連接 </td></tr>
/// <tr><td><b>創(chuàng) 建 人</b>:夏春濤 </td></tr>
/// <tr><td><b>創(chuàng)建時(shí)間</b>:2005-05-28 </td></tr>
/// </table></summary>
~dbobject()
{
if(connection.state.tostring() == "open")
connection.close();
connection.dispose();
}
#endregion
}
}
新聞熱點(diǎn)
疑難解答
圖片精選