每次调用CreateTable都得新建一个连接.浪费.
MyDAdapter.SelectCommand.CommandType = CommandType.Text;这句画蛇添足.
使用了DataAdapter却没设置更新逻辑.-_-!
不想打击你,写的太烂了.

解决方案 »

  1.   

    给你一个类你看看using System;
    using System.Data.SqlClient ;
    using System.Data ;
    using System.Configuration ;
    using System.Collections ;
    using System.Diagnostics;namespace lzinfo.Public
    {
    /// <summary>
    /// 
    /// </summary>
    public class Database:IDisposable
    {
    private SqlConnection  Con; public void Open()
    {//打开连接

    if(this.Con==null)
    {
    this.Con=new SqlConnection (ConfigurationSettings.AppSettings["Connection"]);
    }
    this.Con.Open();

    }
    public void Colse()
    {//关闭连接
    if(this.Con!=null)
    {
    this.Con.Close();
    }
    } public void Dispose()
    {
    if(this.Con!=null)
    {
    this.Con.Dispose ();
    }
    }
    public SqlCommand CreateCommand(string ProName,SqlParameter[] Parms)
    {//建立Command,每一个都会使用Command,但是此Command只能用于存储过程
    this.Open ();
    SqlCommand Cmd=new SqlCommand (ProName,this.Con);
    Cmd.CommandType =CommandType.StoredProcedure ;
    if(Parms!=null)
    {
    foreach(SqlParameter Parm in Parms)
    {
    Cmd.Parameters .Add (Parm);
    }
    }
    Cmd.Parameters .Add (new SqlParameter ("ReturnValue",SqlDbType.Int ,4,ParameterDirection.ReturnValue ,false,0,0,string.Empty  ,DataRowVersion.Default ,null ));
    return Cmd;
    }
    //创建输入参数
    public SqlParameter MakeInParam(string ProName,SqlDbType DbType,Int32 Size,object Values)
    {
    return this.MakeParam (ProName, DbType, Size, ParameterDirection.Input, Values);
    }
    public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Values)
    {
    SqlParameter param; if(Size > 0)
    param = new SqlParameter(ParamName, DbType, Size);
    else
    param = new SqlParameter(ParamName, DbType); param.Direction = Direction;
    if (!(Direction == ParameterDirection.Output && Values == null))
    param.Value = Values; return param;
    }
    public int RunPro(string ProName)
    {//适用于执行删除和更新的存储过程并且不返回任何的记录集,并且不需要传入任何的参数
    SqlCommand Cmd=CreateCommand(ProName,null);
    Cmd.ExecuteNonQuery ();
    this.Colse ();
    return (int)Cmd.Parameters["ReturnValue"].Value ;

    }
    public int RunPro(string ProName,SqlParameter[] Parms)
    {//适用于要传入参数的存储过程
    SqlCommand Cmd=CreateCommand(ProName,Parms);
    Cmd.ExecuteNonQuery ();
    this.Colse ();
    // this.Dispose();
    return (int)Cmd.Parameters["ReturnValue"].Value;

    }
    public void RunPro(string ProName,out SqlDataReader dataReader)
    {//没有输入参数,而且要返回一个DataReader记录集
    SqlCommand Cmd=CreateCommand(ProName,null);
    dataReader=Cmd.ExecuteReader(System.Data.CommandBehavior .CloseConnection );

    }
    public void RunPro(string ProName,SqlParameter[] Parms,out SqlDataReader dataReader)
    {//适用于有传入参数,而且要返回一个DataReader记录集
    SqlCommand Cmd=CreateCommand(ProName,Parms);
    dataReader=Cmd.ExecuteReader(System.Data.CommandBehavior .CloseConnection );

    }
    public int RunPro(string ProName,out DataSet Dataset)
    {//适用于没有传入参数,而且要返回一个DataSet内存数据库
    SqlCommand Cmd=CreateCommand(ProName,null);
    SqlDataAdapter Da=new SqlDataAdapter ();
    Da.SelectCommand =Cmd;
    Dataset=new DataSet ();
    Da.Fill (Dataset);
    this.Colse ();
    return (int)Cmd.Parameters["ReturnValue"].Value;

    }
    public int RunPro(string ProName,SqlParameter[] Parms,out DataSet Dataset)
    {
    SqlCommand Cmd=CreateCommand(ProName,Parms);
    SqlDataAdapter Da=new SqlDataAdapter ();
    Da.SelectCommand =Cmd;
    Dataset=new DataSet ();
    Da.Fill (Dataset);
    this.Colse ();
    return (int)Cmd.Parameters["ReturnValue"].Value ;

    }
    public int RunPro(string procName,SqlParameter[] prams, DataSet dataSet,string TableName)
    {
    SqlCommand Cmd = CreateCommand(procName, prams);
    SqlDataAdapter sqlAdapter;
    sqlAdapter=new SqlDataAdapter();
    sqlAdapter.SelectCommand=Cmd;
    // if (dataSet==null)
    // {
    //  dataSet=new DataSet();
    // };
    sqlAdapter.Fill(dataSet,TableName);
    this.Colse ();
    return (int)Cmd.Parameters["ReturnValue"].Value ;
    }
    }
    }
      

  2.   

    ytywj2003(.NET&Java 你的类经典,基本功高,而且完整,几乎什么都考虑到了,高!!!
    谢谢你,收益太大了!!1