using System;
using System.Configuration;
using System.Data;
using System.Data.OracleClient;
using System.Collections;
using System.Web;
namespace Game.DBUtility
{
/// <summary>
/// A helper class used to execute queries against an Oracle database
/// 一个用来帮助执行Oracle数据库操作的类
/// </summary>
public abstract class OracleHelper
{
// Read the connection strings from the configuration file
//从配置文件中读取数据库连接字串
public static readonly string ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
public static readonly string ConnectionStringLocalTransaction = ConfigurationManager.AppSettings["OraConnString1"];
public static readonly string ConnectionStringInventoryDistributedTransaction = ConfigurationManager.AppSettings["OraConnString2"];
public static readonly string ConnectionStringOrderDistributedTransaction = ConfigurationManager.AppSettings["OraConnString3"];
public static readonly string ConnectionStringProfile = ConfigurationManager.AppSettings["OraProfileConnString"];
public static readonly string ConnectionStringMembership = ConfigurationManager.AppSettings["OraMembershipConnString"];
//Create a hashtable for the parameter cached
//为Parameter创建一个哈稀表的缓存
private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
/// <summary>
/// Execute a database query which does not include a select
/// 执行一次数据库操作但是不包括查询
/// </summary>
/// 下面为所传递的参数
/// <param name="connString">Connection string to database </param>//数据库的连接字串
/// <param name="cmdType">Command type either stored procedure or SQL </param>//Command 类型为存储过程或者SQL语句
/// <param name="cmdText">Acutall SQL Command</param>
/// <param name="commandParameters">Parameters to bind to the command</param>Parameter 参数
/// <returns></returns>
public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters)
{
// Create a new Oracle command
//创建一个Oracle command对象
OracleCommand cmd = new OracleCommand();
//Create a connection
//创建一个connection对象
using (OracleConnection connection = new OracleConnection(connectionString))
{
//Prepare the command
//为command做准备,下面有此方法定义
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
//Execute the command
//执行 command
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
}
/// <summary>
/// Execute an OracleCommand (that returns no resultset) against an existing database transaction
/// using the provided parameters.
/// 用parameters执行现有的数据库事务(没有返回值??)---估计不对
/// </summary>
/// <remarks>
/// e.g.:
/// int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "PublishOrders", new OracleParameter(":prodid", 24));
/// 例子
/// </remarks>
/// <param name="trans">an existing database transaction</param>//一个现有的数据库事务
/// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>//command对象类型 (存储过程???,文本,其他)
/// <param name="commandText">the stored procedure name or PL/SQL command</param>//存储过程名或者是SQL语句
/// <param name="commandParameters">an array of OracleParamters used to execute the command</param>//用于执行的Paramter数组
/// <returns>an int representing the number of rows affected by the command</returns>//返回的是命令影响的行数
public static int ExecuteNonQuery(OracleTransaction trans, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters)
{
OracleCommand cmd = new OracleCommand();
PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
补充: 软件开发 , C# ,