請問:
1.需要那些私有變量?
2.需要那些屬性?
3.是否需要靜態屬性或者靜態私有變量?
4.SqlConnection是否設計為單態?
5.SqlCommand如果只建立一次如何實現不同的數據操作
{
   SqlCommand.text=
}?
6.SqlParameter如何設計?
7.DataSet設為靜態是否會出現問題?Public static DataSet GetDatSet(para[])多謝指教!最好有例子.聯繫:[email protected] (最佳聯繫方式)

解决方案 »

  1.   

    viena(维也纳N02)我的熟友了,呵呵呵,顶一下哈
      

  2.   

    艾,不知道是怎么回事;
    7.DataSet設為靜態是否會出現問題?Public static DataSet GetDatSet(para[])
    这个不是ds是静态的,是方法是静态的!,当然没有关系啊
      

  3.   

    收到.那麼也就是說不需要DataSet私有變量.
    如果每個方法都被調用過,有那些對象是只建立一次,或者說被設置為私有變量.單態是必須的嗎?順便問一下,數據庫訪問工廠模式並不實用,對嗎?
      

  4.   

    看了你这些问题,把自己写的一个基类在blog上帖了出来,不足之处还请大家一定多多指点。http://blog.csdn.net/luck0235/archive/2007/04/04/1552033.aspx
      

  5.   


    //静态变量
    #region 私有变量
    //private static readonly string _connectionString=ConfigurationSettings.AppSettings["ConnectionString"];
    private static string _connectionString="";
    private static SqlConnection _objectConnection;
    private static SqlCommand _objectCommand;
    private static SqlDataAdapter _objectAdapter;
    #endregion //系统的构造函数
    #region 构造函数
    public  SqlServerDB()
    {
    // 
    // TODO: コンストラクタ ロジックをここに追加してください。
    //
    }
    #endregion //公有属性
    #region 公有属性 ConnectionString CurrentConnctState
    public static string ConnectionString
    {
    get
    {
    return _connectionString;
    }
    set
    {
    _connectionString=value;
    }
    }

    public static string CurrentConnctState
    {
    get
    {
    return _objectConnection.State.ToString();
    }
    }
    /*
    public static SqlConnection ObjectConnection
    {
    get
    {
    return _objectConnection;
    }
    }
    */
    #endregion        //实例化类
    #region 实例化方法 public static void Instance
    public static void Instance()
    {
    if(_objectConnection==null)
    {
    _objectConnection=new SqlConnection(_connectionString);
    }
    if(_objectCommand==null)
    {
    _objectCommand=new SqlCommand();
                    _objectCommand.Connection=_objectConnection;
    }
    if(_objectAdapter==null)
    {
    _objectAdapter=new SqlDataAdapter();
    }
    }
    #endregion
      

  6.   

    //数据库参数
    #region 产生数据库存储过程参数 public static SqlParameter CreateParameter
    /// <summary>
    /// 产生数据库存储过程参数
    /// </summary>
    /// <param name="para">存储过程中的参数名称</param>
    /// <param name="paraValue">参数的值</param>
    /// <param name="paramterType">参数的类型</param>
    /// <param name="parameterDirection">参数的传递方向</param>
    /// <param name="length">参数的长度</param>
    /// <returns>存储过程参数</returns>
    public static SqlParameter CreateParameter(string para,string paraValue,System.Data.SqlDbType paramterType,System.Data.ParameterDirection parameterDirection,int length)
    {
    SqlParameter objParameter=new SqlParameter(para,paramterType,length);
    objParameter.Direction=parameterDirection;
    objParameter.Value=paraValue;
    return objParameter;
    }
    #endregion
    //
    #region 产生DateTime类型数据库存储过程参数 public static SqlParameter CreateDateTimeParameter
    /// <summary>
    /// DateTime类型数据库存储过程参数
    /// </summary>
    /// <param name="para">存储过程中的参数名称</param>
    /// <param name="paraValue">参数的类型</param>
    /// <returns>DateTime类型存储过程参数</returns>
    public static SqlParameter CreateDateTimeParameter(string para,string paraValue)
    {
    SqlParameter objParameter=new SqlParameter(para,System.Data.SqlDbType.DateTime,8);
    objParameter.Direction=ParameterDirection.Input;
    objParameter.Value=paraValue;
    return objParameter;
    }
    #endregion
    //
    #region 产生Int类型存储过程参数 public static SqlParameter CreateIntParameter
    /// <summary>
    /// Int类型数据库存储过程参数
    /// </summary>
    /// <param name="para">存储过程中的参数名称</param>
    /// <param name="paraValue">参数的类型</param>
    /// <returns>Int类型存储过程参数</returns>
    public static SqlParameter CreateIntParameter(string para,string paraValue)
    {
    SqlParameter objParameter=new SqlParameter(para,System.Data.SqlDbType.Int,4);
    objParameter.Direction=ParameterDirection.Input;
    objParameter.Value=paraValue;
    return objParameter;
    }
    #endregion
    //
    #region 产生Nvarchar类型存储过程参数 public static SqlParameter CreateNvarcharParameter
    /// <summary>
    /// Nvarchar类型数据库存储过程参数
    /// </summary>
    /// <param name="para">存储过程中的参数名称</param>
    /// <param name="paraValue">参数的类型</param>
    /// <returns>Nvarchar类型存储过程参数</returns>
    public static SqlParameter CreateNvarcharParameter(string para,string paraValue)
    {
    SqlParameter objParameter=new SqlParameter(para,System.Data.SqlDbType.NVarChar,50);
    objParameter.Direction=ParameterDirection.Input;
    objParameter.Value=paraValue;
    return objParameter;
    }
    #endregion
      

  7.   

    //打开关闭连接
    #region 打开数据库连接 public static void Open
    public static void Open()
    {
    if(_objectConnection.State==ConnectionState.Closed)
    {
    try
    {
    _objectConnection.Open();
    }
    catch(Exception ex)
    {
    throw new Exception(ex.Message);
    }
    }
    }
    #endregion
    //
    #region 关闭数据库连接 public static void Close
    public static void Close()
    {
    if(_objectConnection.State==ConnectionState.Open)
    {
    try
    {
    _objectConnection.Close();
    }
    catch(Exception ex)
    {
    throw new Exception(ex.Message);
    }
    }
    }
    #endregion        //设置SqlCommand
    #region 设置 SqlCommand public static void SetCommand (string strSql)
    public static void SetCommand(string strSql)
    {
    _objectCommand.CommandText=strSql;
    }
    #endregion
    //
    #region 设置 SqlCommand public static void SetCommand (string,SqlParameter[])
    public static void SetCommand(string procedure,SqlParameter[] paraArray)
    {
    _objectCommand.CommandType=CommandType.StoredProcedure;
    foreach(SqlParameter para in paraArray)
    {
    _objectCommand.Parameters.Add(para);
    }
    }
    #endregion
    //
    #region 设置 SqlCommand public static void SetCommand (string,SqlParameter)
    public static void SetCommand(string procedure,SqlParameter para)
    {
    _objectCommand.CommandText=procedure;
    _objectCommand.CommandType=CommandType.StoredProcedure;
    _objectCommand.Parameters.Add(para);
    }
    #endregion
    //
    #region 设置 SqlCommand public static void SetCommand (SqlCommand objCommand)
    public static void SetCommand(SqlCommand objCommand)
    {
    _objectCommand=objCommand;
    _objectCommand.Connection=_objectConnection;
    }
    #endregion
      

  8.   

    除了静态方法以外,什么都不需要
    你可以看一下SQLHelper,虽然代码轮七八糟比较垃圾,
    但至少没有什么错误~
      

  9.   

    也就是說每次還是建立不同的sql對象是吧!順便問一下
    static SqlCommand objcmd=new SqlCommand(SQL, conn);
    objcmd=null;CLR是否回收這個對象?
      

  10.   

    http://blog.csdn.net/shoushii/archive/2007/04/05/1552737.aspx
    這個設計的合格嗎?
      

  11.   

    SQLHelper就够用了,不需要自己写了.