/*******************************************************************************
* Copyright(c) 2014 dongke All rights reserved. / Confidential
* 类的信息:
* 1.程序名称:DataManager.cs
* 2.功能描述:本系统的数据库访问封装类,所有数据访问都调用
* 编辑履历:
* 作者 日期 版本 修改内容
* 欧阳涛 2013/11/21 1.00 新建
*******************************************************************************/
using System;
using System.Collections.Generic;
using System.Data;
//using System.Data.OracleClient;
using System.Data.SqlClient;
using Oracle.ManagedDataAccess.Client;
namespace Dongke.IBOSS.PRD.Basics.DataAccess
{
public sealed class DataManager
{
//public static string ConnectionString = "Data Source=ORCL;User Id=dongkeTest;Password=dongke;Integrated Security =no;";// 数据库连接串
//public static string ConnectionString = "Provider=OraOLEDB.Oracle;Persist Security Info=False;Data Source=ORCL;User ID=dongkeTest;Password=dongke";
///
/// 数据库连接字符串
///
public static string ConnectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.19)(PORT=1521))(CONNECT_DATA=(SID=DEVIBOSSPRD)));User Id=deviboss;Password=dongke;";
///
/// 数据库连接字符串(报表)
///
public static string ConnectionStringReport = "";
///
/// 数据库连接字符串
///
public static string ConnectionStringFormat = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT={1}))(CONNECT_DATA=(SERVICE_NAME={2})));User Id={3};Password={4};";
///
/// 日志文件保存地址
///
public static string LogFileStartPath = System.Windows.Forms.Application.StartupPath;
/////
///// 日志文件名称
/////
//public static string LogFileName = "AppLog.log";
/////
///// 日志文件控制类型 True 表示可以写入 False 表示不需要写入
/////
//public static bool LogFileControl = true;
public static string LicString = null;
public static DataSet LicDataSet = null;
public static object LicLock = new object();
#region ExecuteNonQuery
///
/// 执行SQL语句,返回影响的记录数
///
/// SQL语句
///
/// 0:SQL语句执行影响的行数为0
/// 大于0:SQL语句执行成功
/// 小于0:SQL语句执行失败
///
public static int ExecuteNonQuery(string sqlString)
{
try
{
return OracleHelper.ExecuteNonQuery(ConnectionString, CommandType.Text, sqlString);
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 执行带有参数的SQL语句
///
/// SQL语句
/// SQL语句的参数
///
/// 0:SQL语句执行影响的行数为0
/// 大于0:SQL语句执行成功
/// 小于0:SQL语句执行失败
///
public static int ExecuteNonQuery(string sqlString, params OracleParameter[] commandParms)
{
try
{
return OracleHelper.ExecuteNonQuery(ConnectionString, CommandType.Text, sqlString, commandParms);
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 用一个已经存在的数据库连接执行一个SQL命令
/// 例如:int result = ExecuteNonQuery("PublishOrders",
/// CommandType.StoredProcedure,
/// new OracleParameter(":prodid", 24));
///
/// 执行命令类型(存储过程、SQL语句等)
/// 存储过程名称或者SQL语句
/// 参数数组
/// 执行命令对数据库影响的行数
public static int ExecuteNonQuery(string commandText, CommandType commandType,
params OracleParameter[] commandParameters)
{
try
{
return OracleHelper.ExecuteNonQuery(ConnectionString, commandType, commandText, commandParameters);
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 执行多条SQL语句,实现数据库事务。
///
/// 多条SQL语句
///
/// -1:执行sql语句失败
/// 其他:执行sql语句成功,并返回影响行数
///
public static int ExecuteNonQuery(List sqlStringList)
{
using (SqlConnection sqlConnection = new SqlConnection(ConnectionString))
{
// 打开数据库连接
sqlConnection.Open();
// 为执行命令对象赋值
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Connection = sqlConnection;
SqlTransaction sqlTransaction = sqlConnection.BeginTransaction();
sqlCommand.Transaction = sqlTransaction;
int affectedRowCount = 0;
int affectedRowCountTemp = 0;
try
{
// 循环遍历SQL文数据集
foreach (string sqlString in sqlStringList)
{
if (!string.IsNullOrEmpty(sqlString))
{
sqlCommand.CommandText = sqlString;
affectedRowCountTemp = sqlCommand.ExecuteNonQuery();
if (0 > affectedRowCountTemp)
{
sqlTransaction.Rollback();
return -1;
}
affectedRowCount += affectedRowCountTemp;
}
}
sqlTransaction.Commit();
// 清除sql执行对象的属性值
sqlCommand.Parameters.Clear();
sqlCommand.Dispose();
}
catch (SqlException ex)
{
sqlTransaction.Rollback();
throw ex;
}
finally
{
// 释放资源
if (sqlConnection.State != ConnectionState.Closed && sqlConnection != null)
{
sqlConnection.Close();
}
}
return affectedRowCount;
}
}
///
/// 执行带参数的多条SQL语句,实现数据库事务。
///
/// SQL语句列表
/// 对应的参数列表
///
/// -1:执行sql语句失败
/// 其他:执行sql语句成功,并返回影响行数
///
public static int ExecuteNonQuery(List sqlStringList, List commandParmsList)
{
// sql语句的个数与参数个数不相同时,直接返回-1
if (sqlStringList.Count != commandParmsList.Count)
{
return -1;
}
using (SqlConnection sqlConnection = new SqlConnection(ConnectionString))
{
// 打开数据库连接
sqlConnection.Open();
// 为执行命令对象赋值
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Connection = sqlConnection;
SqlTransaction sqlTransaction = sqlConnection.BeginTransaction();
sqlCommand.Transaction = sqlTransaction;
int affectedRowCount = 0;
int affectedRowCountTemp = 0;
try
{
// 循环遍历文本和参数
for (int i = 0; i < sqlStringList.Count; i++)
{
if (!string.IsNullOrEmpty(sqlStringList[i]) && commandParmsList[i] != null)
{
// 执行命令的参数设定
foreach (OracleParameter commandParms in commandParmsList[i])
{
if ((commandParms.Direction == ParameterDirection.InputOutput
|| commandParms.Direction == ParameterDirection.Input)
&& (commandParms.Value == null))
{
commandParms.Value = DBNull.Value;
}
sqlCommand.Parameters.Add(commandParms);
}
// SQL命令的执行语句设定
sqlCommand.CommandText = sqlStringList[i];
// 执行命令
affectedRowCountTemp = sqlCommand.ExecuteNonQuery();
if (0 > affectedRowCountTemp)
{
sqlTransaction.Rollback();
return -1;
}
affectedRowCount += affectedRowCountTemp;
sqlCommand.Parameters.Clear();
}
}
sqlTransaction.Commit();
// 清除sql执行对象的属性值
sqlCommand.Parameters.Clear();
sqlCommand.Dispose();
}
catch (SqlException ex)
{
sqlTransaction.Rollback();
throw ex;
}
finally
{
// 释放资源
if (sqlConnection.State != ConnectionState.Closed && sqlConnection != null)
{
sqlConnection.Close();
}
}
return affectedRowCount;
}
}
#endregion
#region ExecuteDataset
///
/// 执行查询语句,返回DataSet
///
/// 查询语句
/// DataSet数据集
public static DataSet ExecuteDataset(string sqlString)
{
try
{
return OracleHelper.Query(ConnectionString, sqlString);
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 执行带有参数的查询语句,返回DataSet
///
/// 查询语句
/// 查询语句的参数
/// DataSet数据集
public static DataSet ExecuteDataset(string sqlString, params OracleParameter[] commandParms)
{
try
{
return OracleHelper.Query(ConnectionString, sqlString, commandParms);
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
}
}