自编自用DataProxy

发布时间: 2007-01-24 11:37    作者: 未知    来源: 未知    浏览:    评论

 

using System;
using System.Data;
using System.Data.SqlClient;

namespace DataProxy
{
 /// <summary>
 /// 说明:  本类主要实现对数据库的操作(查询|SP)
 /// 建立者:  黄宗银
 /// 建立时间: 2004-12-4
 /// </summary>
 public class DataProxy
 {
  #region 读取数据
  /// <summary>
  /// 从数据库查询数据
  /// </summary>
  /// <param name="RowsCount">返回最 Top 的记录数</param>
  /// <param name="Columns">查询列名</param>
  /// <param name="Target">查询目标</param>
  /// <param name="Condition">查询条件</param>
  /// <param name="OrderBy">排序</param>
  /// <param name="Connect">连接字符串</param>
  /// <param name="Ex">异常信息</param>
  /// <returns>查询结果</returns>
  public static DataSet GetDBData( int RowsCount, string Columns, string Target, string Condition, string OrderBy, string Connect, ref string Ex )
  {
   Ex = string.Empty;
   SqlConnection sqlConnection = new SqlConnection( Connect );
   try
   {
    string[] arrColumns = Columns.Split( ',' );
    string strQuery = "SELECT Top " + RowsCount + " " + ((arrColumns[0].Trim() == "*") ? " *" : " [" + arrColumns[0].Trim() + "]");
    for( int i = 1; i < arrColumns.Length; i++ )
    {
     strQuery += ", [" + arrColumns[i].Trim() + "]";
    }
    strQuery += " FROM [" + Target + "]";
    
    if( Condition != null && Condition.Trim() != string.Empty )
    {
     strQuery += " WHERE " + Condition;
    }

    if( OrderBy != null && OrderBy.Trim() != string.Empty )
    {
     strQuery += " ORDER BY " + OrderBy;
    }

    SqlDataAdapter sqlDataAdapter = new SqlDataAdapter( strQuery, sqlConnection );

    DataSet ds = new DataSet();
    sqlDataAdapter.Fill( ds );

    sqlConnection.Close();
    return ds;
   }
   catch( SqlException ex )
   {
    sqlConnection.Close();
    Ex = ex.Message;
    return null;
   }
  }

  /// <summary>
  /// 从数据库查询数据
  /// </summary>
  /// <param name="Columns">查询列名</param>
  /// <param name="Target">查询目标</param>
  /// <param name="Condition">查询条件</param>
  /// <param name="OrderBy">排序</param>
  /// <param name="Connect">连接字符串</param>
  /// <param name="Ex">异常信息</param>
  /// <returns>查询结果</returns>
  public static DataSet GetDBData( string Columns, string Target, string Condition, string OrderBy, string Connect, ref string Ex )
  {
   Ex = string.Empty;
   SqlConnection sqlConnection = new SqlConnection( Connect );
   try
   {
    string[] arrColumns = Columns.Split( ',' );
    string strQuery = "SELECT";
    int nStart = 0;
    if( arrColumns[0].Trim() == "*" )
    {
     strQuery += " *,";
     nStart = 1;
    }
    for( int i = nStart; i < arrColumns.Length; i++ )
    {
     string[] arrColumn = arrColumns[i].Trim().Split( ' ' );
     strQuery += " [" + arrColumn[0].Trim() + "]";
     if( arrColumn.Length > 1 )
     {
      strQuery += " [" + arrColumn[1].Trim() + "]";
     }
     strQuery += ",";
    }
    strQuery = strQuery.Substring( 0, strQuery.Length - 1 ) + " FROM [" + Target + "]";

    if( Condition != null && Condition.Trim() != string.Empty )
    {
     strQuery += " WHERE " + Condition;
    }

    if( OrderBy != null && OrderBy.Trim() != string.Empty )
    {
     strQuery += " ORDER BY " + OrderBy;
    }

    SqlDataAdapter sqlDataAdapter = new SqlDataAdapter( strQuery, sqlConnection );

    DataSet ds = new DataSet();
    sqlDataAdapter.Fill( ds );

    sqlConnection.Close();
    return ds;
   }
   catch( SqlException ex )
   {
    sqlConnection.Close();
    Ex = ex.Message;
    return null;
   }
  }

  /// <summary>
  /// 从数据库查询数据
  /// </summary>
  /// <param name="Columns">查询列名</param>
  /// <param name="Target">查询目标</param>
  /// <param name="Condition">查询条件</param>
  /// <param name="Connect">连接字符串</param>
  /// <param name="Ex">异常信息</param>
  /// <returns>查询结果</returns>
  public static DataSet GetDBData( string Columns, string Target, string Condition, string Connect, ref string Ex )
  {
   Ex = string.Empty;

   DataSet ds = GetDBData( Columns, Target, Condition, null, Connect, ref Ex );

   if( Ex != string.Empty )
   {
    return null;
   }

   return ds;
  }

  /// <summary>
  /// 从数据库查询数据
  /// </summary>
  /// <param name="Columns">查询列名</param>
  /// <param name="Target">查询目标</param>
  /// <param name="PKColumn">主键列名</param>
  /// <param name="PKValue">主键值</param>
  /// <param name="Q">是否加引号</param>
  /// <param name="Connect">连接字符串</param>
  /// <param name="Ex">异常信息</param>
  /// <returns>返回查询结果</returns>
  public static DataTable GetDBData( string Columns, string Target, string PKColumn, string PKValue, bool Q, string Connect, ref string Ex )
  {
   Ex = string.Empty;
   string strCondition = null;

   if( PKColumn != null )
   {
    strCondition = "[" + PKColumn + "] = ";
    if( Q )
    {
     strCondition += "'" + PKValue + "'";
    }
    else
    {
     strCondition += PKValue;
    }
   }

   DataSet ds = GetDBData( Columns, Target, strCondition, Connect, ref Ex );

   if( Ex != string.Empty )
   {
    return null;
   }

   return ds.Tables[0];
  }
  #endregion

  #region 执行存储过程
  /// <summary>
  /// 执行某个存储过程通过参数返回值
  /// </summary>
  /// <param name="P">存储过程名</param>
  /// <param name="xsd">数据集对象</param>
  /// <param name="Connect">连接字符串</param>
  /// <param name="Ex">异常信息</param>
  /// <returns>执行结果</returns>
  public static void ExecParam( string P, DataSet xsd, string Connect, ref string Ex )
  {
   SqlConnection sqlConnection = new SqlConnection( Connect );

   try
   {
    SqlCommand sqlCommand = new SqlCommand( P, sqlConnection );
    sqlCommand.CommandType = CommandType.StoredProcedure;

    if( xsd.Tables["IN"] != null )
    {
     foreach( DataColumn dc in xsd.Tables["IN"].Columns )
     {
      sqlCommand.Parameters.Add( "@" + dc.ColumnName, dc.DataType );
      sqlCommand.Parameters["@" + dc.ColumnName].Value = dc.Table.Rows[0][dc.ColumnName];
     }
    }

    if( xsd.Tables["OUT"] != null )
    {
     foreach( DataColumn dc in xsd.Tables["OUT"].Columns )
     {
      SqlParameter sqlParameter = new SqlParameter( "@" + dc.ColumnName, dc.DataType );
      sqlParameter.Direction = ParameterDirection.InputOutput;
      sqlParameter.Value = System.DBNull.Value;
      if( xsd.Tables["OUT"].Rows.Count > 0 )
      {
       sqlParameter.Value = dc.Table.Rows[0][dc.ColumnName];
      }
      sqlCommand.Parameters.Add( sqlParameter );
     }
    }

    sqlConnection.Open();
    sqlCommand.ExecuteNonQuery();

    if( xsd.Tables["OUT"] != null )
    {
     DataRow dr = xsd.Tables["OUT"].NewRow();
     xsd.Tables["OUT"].Rows.InsertAt( dr, 0 );
     for( int i = 0; i < xsd.Tables["OUT"].Columns.Count; i++ )
     {
      string strColumnName = xsd.Tables["OUT"].Columns[i].ColumnName;
      xsd.Tables["OUT"].Rows[0][i] = sqlCommand.Parameters["@" + strColumnName].Value;
     }
    }
   }
   catch( SqlException ex )
   {
    Ex = ex.Message;
   }
   finally
   {
    sqlConnection.Close();
   }
  }
  #endregion

  #region 四种基本语句

  /// <summary>
  /// 执行SELECT
  /// </summary>
  /// <param name="Text">SELECT后的文本</param>
  /// <param name="ds">输出查询结果</param>
  /// <param name="srcTable">用于表映射的源表的名称</param>
  /// <param name="Connect">连接字符串</param>
  /// <param name="Ex">异常信息</param>
  /// <returns>返回行数</returns>
  public static int Select( string Text, ref DataSet ds, string srcTable, string Connect, ref string Ex )
  {
   return Fill( "SELECT " + Text, ref ds, srcTable,  Connect, ref Ex );
  }

  public static int Select( string Text, ref DataSet ds, string Connect, ref string Ex )
  {
   return Fill( "SELECT " + Text, ref ds, Connect, ref Ex );
  }

  /// <summary>
  /// 执行一串SQL语句
  /// </summary>
  /// <param name="Text">SQL文本</param>
  /// <param name="ds">输出查询结果</param>
  /// <param name="srcTable">用于表映射的源表的名称</param>
  /// <param name="Connect">连接字符串</param>
  /// <param name="Ex">异常信息</param>
  /// <returns>返回行数</returns>
  public static int Fill( string Text, ref DataSet ds, string srcTable, string Connect, ref string Ex )
  {
   Ex = string.Empty;
   int nFill = 0;
   try
   {
    SqlDataAdapter sqlDataAdapter = new SqlDataAdapter( Text, Connect );
    nFill = sqlDataAdapter.Fill( ds, srcTable );
    return nFill;
   }
   catch( SqlException ex )
   {
    Ex = ex.Message;
    return nFill;
   }
   catch( Exception ex )
   {
    throw ex;
   }
  }

  public static int Fill( string Text, ref DataSet ds, string Connect, ref string Ex )
  {
   return Fill( Text, ref ds, "Table",  Connect, ref Ex );
  }

  /// <summary>
  /// 执行INSERT
  /// </summary>
  /// <param name="Text">INSERT后的文本</param>
  /// <param name="Connect">连接字符串</param>
  /// <param name="Ex">异常信息</param>
  /// <returns>返回行数</returns>
  public static int Insert( string Text, string Connect, ref string Ex )
  {
   return ExecuteNonQuery( "INSERT " + Text, Connect, ref Ex );
  }

  /// <summary>
  /// 执行UPDATE
  /// </summary>
  /// <param name="Text">UPDATE后的文本</param>
  /// <param name="Connect">连接字符串</param>
  /// <param name="Ex">异常信息</param>
  /// <returns>返回行数</returns>
  public static int Update( string Text, string Connect, ref string Ex )
  {
   return ExecuteNonQuery( "UPDATE " + Text, Connect, ref Ex );
  }

  /// <summary>
  /// 执行DELETE
  /// </summary>
  /// <param name="Text">DELETE后的文本</param>
  /// <param name="Connect">连接字符串</param>
  /// <param name="Ex">异常信息</param>
  /// <returns>返回行数</returns>
  public static int Delete( string Text, string Connect, ref string Ex )
  {
   return ExecuteNonQuery( "DELETE " + Text, Connect, ref Ex );
  }

  /// <summary>
  /// 执行某SQL语句(非SELECT子句)
  /// </summary>
  /// <param name="Text">SQL文本</param>
  /// <param name="Connect">连接字符串</param>
  /// <param name="Ex">异常信息</param>
  /// <returns>返回行数</returns>
  public static int ExecuteNonQuery( string Text, string Connect, ref string Ex )
  {
   int nFill = 0;
   Ex = string.Empty;
   SqlConnection sqlConnection = new SqlConnection( Connect );
   try
   {
    SqlCommand sqlCommand = new SqlCommand( Text, sqlConnection );
    sqlConnection.Open();
    nFill = sqlCommand.ExecuteNonQuery();
    return nFill;
   }
   catch( SqlException ex )
   {
    sqlConnection.Close();
    Ex = ex.Message;
    return nFill;
   }
   catch( Exception ex )
   {
    sqlConnection.Close();
    throw ex;
   }
   finally
   {
    sqlConnection.Close();
   }
  }
  #endregion
 }
}


TAG

Smile Big Smile Surprise Stick out tongue Wink Sad Tongue Tied Indifferent Crying Embarrassed Cool Angry Angel Devil [8-|] [:#] [:-*] [:^)] [<:o)] [|-)] Yes Beer Left Hug Music Star Time Snail Pizza Automobile Umbrella Computer Storm [mo] [8o|] [^o)] [+o(] [*-)] [8-)] Coffee No Drinks [Z] Right Hug Cake Broken Heart Gift Wilted Flower Movie Dog Idea Sleep Email Travel Paradise
呢称:

加粗 斜体 下划线 链接 图片 代码 邮件地址 引用 列表

最多只能输入100个字符

Tags

SQL 数据库 asp.net C# XML 控件 .NET教程 程序 事件 数据 安全 代码 Server 客户端 验证 数据库专栏 接口 文件 Oracle DataSet 函数 DataGrid 问题 .net return C#语言 JavaScript 服务 IIS 对象 语句 windows 继承 时间 web.config 设计 开发 参数 变量 解决 字符 ADO.net 环境 VB.Net语言 web 异常 工具 服务器 计算 实例 OLEDB Application VB Word WebService insert asp net 安装 记录

精华推荐

更多

精品下载

更多