时间:2021-05-18
usingSystem;
usingSystem.Data;
usingSystem.Data.SqlClient;
usingSystem.Configuration;
usingSystem.IO;
/*
*AUTHOR:ZHANGLEI
*CREATEDATE:2007.1.5
*功能:BLL层,实现了数据库操作的封装
*并且提供了足够的执行存储过程的参数组合
*DESCRIPTION:本类中用到了方法重载
*ExecuteDataSet方法在本类中实现了四次重载
**/
namespacejob_17
{
///<summary>
///job17的摘要说明。
///</summary>
publicclassjob17
{
privatereadonlystringP_Con=ConfigurationSettings.AppSettings["P_Con"].ToString();
publicjob17()
{
//
//TODO:在此处添加构造函数逻辑
//
}
#region"执行任意参数组合的存储过程"
///<summary>
///命令准备操作,提供足够多的参数组合
///本类中一个比较重要的方法
///</summary>
publicvoidpreparecommand(SqlConnectionmyconn,SqlCommandmycomm,SqlTransactiontrans,CommandTypecmdType,stringcmdText,SqlParameter[]param)//注意里面的参数
{
if(myconn.State!=ConnectionState.Open)
{
myconn.Open();
}
mycomm.Connection=myconn;
mycomm.CommandText=cmdText;
if(trans!=null)
{
mycomm.Transaction=trans;
}
mycomm.CommandType=cmdType;
if(param!=null)
{
foreach(SqlParameterparameterinparam)
{
mycomm.Parameters.Add(parameter);
}
}
}
///<summary>
///第一个返回DataSet类型的ExecuteDataSet方法
///</summary>
publicDataSetExecuteDataSet(SqlConnectionmyconn,CommandTypecmdType,stringcmdText,SqlParameter[]commandpara)
{
SqlCommandmycomm=newSqlCommand();
preparecommand(myconn,mycomm,(SqlTransaction)null,cmdType,cmdText,commandpara);
SqlDataAdapteradpt=newSqlDataAdapter(mycomm);//调用上方的preparecommand方法
DataSetds=newDataSet();
adpt.Fill(ds);
mycomm.Parameters.Clear();
returnds;
}
///<summary>
///第二个返回DataSet类型的ExecuteDataSet方法
///是在第一个方法的基础上实现,实现了ExecuteDataSet方法的重载
///</summary>
publicDataSetExecuteDataSet(stringconnstr,CommandTypecmdType,stringcmdText,SqlParameter[]cmdpara)//方法重载,在第一种的基础上重载,以便提供足够多的参数组合
{
using(SqlConnectionmyconn=newSqlConnection(connstr))
{
returnExecuteDataSet(myconn,cmdType,cmdText,cmdpara);
}
}
///<summary>
///第三个返回DataSet类型的ExecuteDataSet方法
///提供使用存储过程时不带参数的组合
///</summary>
publicDataSetExecuteDataSet(SqlConnectionmyconn,CommandTypecmdType,stringcmdText)
{
returnExecuteDataSet(myconn,cmdType,cmdText,(SqlParameter[])null);
}
///<summary>
///第四个返回DataSet类型的ExecuteDataSet方法
///提供使用存储过程时不带参数的组合
///</summary>
publicDataSetExecuteDataSet(stringconnstr,CommandTypecmdType,stringcmdText)
{
returnExecuteDataSet(connstr,cmdType,cmdText,(SqlParameter[])null);
}
#endregion
#region"执行返回结果的sql语句"
///<summary>
///返回结果的类型为DataTable
///</summary>
publicDataTableExecuteDataTablesql(stringsql)
{
SqlConnectionmyconn=newSqlConnection(P_Con);
SqlDataAdapteradpt=newSqlDataAdapter(sql,myconn);
DataSetds=newDataSet();
adpt.Fill(ds);
returnds.Tables[0];
}
///<summary>
///返回结果的类型为SqlDataReader
///</summary>
publicSqlDataReaderExecuteDataReadersql(stringsql)
{
SqlConnectionmyconn=newSqlConnection(P_Con);
SqlDataReaderdr=null;
SqlCommandmycomm=newSqlCommand(sql,myconn);
try
{
myconn.Open();
dr=mycomm.ExecuteReader();
}
catch
{
//StreamWritersw=newStreamWriter(@"c:\err.txt",true,System.Text.Encoding.GetEncoding("GB2312"));
//sw.WriteLine("============================出错信息==========================");
//sw.WriteLine("出错时间:"+DateTime.Now.ToString()+"");
//sw.WriteLine(ex.ToString());
//sw.Close();
throw;
}
returndr;
}
///<summary>
///返回结果的类型为DataSet
///</summary>
publicDataSetExecutesqlDS(stringsql)
{
SqlConnectionmyconn=newSqlConnection(P_Con);
SqlDataAdapteradpt=newSqlDataAdapter(sql,myconn);
DataSetds=newDataSet();
adpt.Fill(ds);
returnds;
}
#endregion
#region"执行不返回结果的sql语句"
///<summary>
///执行不返回结果的sql语句
///</summary>
publicvoidExecuteNonsql(stringsql)
{
SqlConnectionmyconn=newSqlConnection(P_Con);
SqlCommandmycomm=newSqlCommand(sql,myconn);
try
{
myconn.Open();
mycomm.ExecuteNonQuery();
myconn.Close();
}
catch(Exceptione)
{
//StreamWritersw=newStreamWriter(@"c:\err.txt",true,System.Text.Encoding.GetEncoding("GB2312"));
//sw.WriteLine("============================出错信息==========================");
//sw.WriteLine("出错时间:"+DateTime.Now.ToString()+"");
//sw.WriteLine(e.ToString());
//sw.Close();
thrownewException(e.Message,e);
}
}
#endregion
#region"启用带事务的sql语句如(insert,update)"
///<summary>
///使用事务处理
///</summary>
publicvoidExecuteTransql(stringsql)
{
SqlConnectionmyconn=newSqlConnection(P_Con);
SqlCommandmycomm=newSqlCommand(sql,myconn);
SqlTransactiontrans=null;
try
{
myconn.Open();
trans=myconn.BeginTransaction();
mycomm.Transaction=trans;
mycomm.ExecuteNonQuery();
trans.Commit();
}
catch(Exceptionex)
{
trans.Rollback();
thrownewException(ex.Message,ex);
}
}
#endregion
}
}
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
1问题自定义了一个Oracle函数。编译正常;使用PL/SQLDeveloper的Test窗口模式,测试通过。但Java直接调用失败;使用PL/SQLDevel
为了实现自定义的Menu和ContextMenu效果,下面演示代码通过派生ProfessionalColorTable类,在自定义的类中重写Profession
一番测试下来,雪①找到了自己觉得方便的方法,特记录在此。1、因为要用到自定义标签,所以首先要在eclassuserfun.php加入一个自定义函数,即复制代码代
Java自定义异常类的实例详解为什么要自己编写异常类?假如jdk里面没有提供的异常,我们就要自己写。我们常用的类ArithmeticException,Null
WPF自定义窗口基类时,窗口基类只定义.cs文件,xaml文件不定义。继承自定义窗口的类xaml文件的根节点就不再是,而是自定义窗口类名(若自定义窗口与继承