using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Windows.Forms;
namespace HuanXin.ERP
{
class ClsCN:IDisposable
{
private SqlConnection MainCn;//创建连接对象
SqlTransaction MainTran;
public string sServer;
public string sDataBase ;
public string sUser;
public string sPassword;
//开始事务
public void BeginTran()
{
if (!this.CnOpen())
return;
MainTran=MainCn.BeginTransaction();
}
//结束事务
public void Commit()
{
MainTran.Commit();
CnClose();
}
//回滚事务
public void RollBack()
{
MainTran.Rollback();
CnClose();
}
public ClsCN()
{
ClsIni oIni = new ClsIni();
sServer = oIni.ReadIni("Erp", "Server", "HXErp.ini");
sDataBase = oIni.ReadIni("Erp", "DataBase", "HXErp.ini");
sUser = oIni.ReadIni("Erp", "UserName", "HXErp.ini");
sPassword = oIni.ReadIni("Erp", "PassWord", "HXErp.ini");
}
public bool CheckOpen()
{
SqlConnection oCn = new SqlConnection("Data Source=" + sServer + ";DataBase=" + sDataBase + ";User ID=" + sUser + ";PWD=" + sPassword + " ");
try
{
oCn.Open();
return true;
}
catch (Exception e)
{
return false;
}
}
private bool CnOpen()//OPEN数据库连接
{
if (MainCn==null)
{
MainCn = new SqlConnection("Data Source="+ sServer +";DataBase=" + sDataBase + ";User ID=" + sUser + ";PWD=" + sPassword + " ");
}
if (MainCn.State == System.Data.ConnectionState.Closed)
{
try
{
MainCn.Open();
return true;
}
catch (Exception e)
{
return false ;
}
}
else
return true;
}
private void CnClose()//关闭数据库连接
{
if (MainCn != null)
MainCn.Close();
}
private void CnDispose()//释放资源
{
if(MainCn!=null)
{
MainCn.Dispose();
MainCn=null;
}
}
///
/// 转换参数
///
/// 存储过程名称或命令文本
/// 参数类型
/// 参数大小
/// 参数值
/// 新的 parameter 对象
public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value)
{
return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
}
///
/// 初始化参数值
///
/// 存储过程名称或命令文本
/// 参数类型
/// 参数大小
/// 参数方向
/// 参数值
/// 新的 parameter 对象
private SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
{
SqlParameter param;
if (Size > 0)
param = new SqlParameter(ParamName, DbType, Size);
else
param = new SqlParameter(ParamName, DbType);
param.Direction = Direction;
if (!(Direction == ParameterDirection.Output && Value == null))
param.Value = Value;
return param;
}
//public int RunProc(string procName,SqlParameter[] prams)
//{
// SqlCommand cmd = CreateCommand(procName, prams);
// if (cmd == null)
// return 0;
// cmd.ExecuteNonQuery();
// return (int)cmd.Parameters["ReturnValue"].Value;
//}
public int RunProc(string procName)
{
if (!this.CnOpen())
return 0;
SqlCommand cmd = new SqlCommand(procName, MainCn);
cmd.Transaction = MainTran;
cmd.ExecuteNonQuery();
return 1;
}
public DataSet RunProcReturn(string procName, SqlParameter[] prams, string tbName)
{
SqlDataAdapter dap = CreateDataAdaper(procName, prams);
if (dap == null)
return null;
DataSet ds = new DataSet();
try
{
dap.Fill(ds, tbName);
return ds;
}
catch (Exception e)
{
//MessageBox.Show("读取失败,请与管理员联系!"+e.Message);
return null;
}
}
public DataSet RunProcReturn(string procName, string tbName)
{
SqlDataAdapter dap = CreateDataAdaper(procName, null);
DataSet ds = new DataSet();
try
{
dap.Fill(ds, tbName);
return ds;
}
catch (Exception e)
{
//MessageBox.Show("读取失败,请与管理员联系!" + e.Message);
return null;
}
}
private SqlDataAdapter CreateDataAdaper(string procName, SqlParameter[] prams)
{
if (this.CnOpen())
{
SqlDataAdapter dap = new SqlDataAdapter(procName, MainCn);
dap.SelectCommand.CommandType = CommandType.Text;
if (prams != null)
{
foreach (SqlParameter parameter in prams)
dap.SelectCommand.Parameters.Add(parameter);
}
dap.SelectCommand.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4,
ParameterDirection.ReturnValue, false, 0, 0,
string.Empty, DataRowVersion.Default, null));
return dap;
}
else
{
return null;
}
}
private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
{
if (this.CnOpen())
{
SqlCommand cmd = new SqlCommand(procName, MainCn);
cmd.CommandType = CommandType.Text;
cmd.Transaction = MainTran;
if (prams != null)
{
foreach (SqlParameter parameter in prams)
cmd.Parameters.Add(parameter);
}
cmd.Parameters.Add(
new SqlParameter("ReturnValue", SqlDbType.Int, 4,
ParameterDirection.ReturnValue, false, 0, 0,
string.Empty, DataRowVersion.Default, null));
return cmd;
}
else
return null;
}
#region IDisposable 成员
public void Dispose()
{
throw new Exception("The method or operation is not implemented.");
}
#endregion
}
}