我自己做asp.net有一两个月了,但是不知道自己这样做对不对??
我把所有的对数据库的操作写在一个类里,方法都用静态的
比如:
//输入SELECT语句,获得返回数据集
public static DataTable SelectFormForum(string sql,int start,int size,string tablename)
{
try
{
SqlConnection sqlConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["Forum"]);
SqlDataAdapter sqlAdapter1 = new SqlDataAdapter(sql, sqlConnection);
DataSet returns = new DataSet();
sqlAdapter1.Fill(returns,start,size,tablename);
return returns.Tables[0];
}
catch (Exception ex)
{
throw (ex);
}
}
然后在调用的时候类名.SelectFormForum()这样做好不好,需要关闭吗??????

解决方案 »

  1.   

    一定要关闭.
    public static DataTable SelectFormForum(string sql,int start,int size,string tablename)
    {
    try
    {
    SqlConnection sqlConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["Forum"]);
    SqlDataAdapter sqlAdapter1 = new SqlDataAdapter(sql, sqlConnection);
    DataSet returns = new DataSet();
    sqlAdapter1.Fill(returns,start,size,tablename);
    sqlConnection.Close();
    return returns.Tables[0];
    }
    catch (Exception ex)
    {
    throw (ex);
    }
    }
      

  2.   

    sqlConnection.Close();这句就关闭了,
    用静态还是实例方法哪个好没有定论,你觉得够用就好了
      

  3.   

    public static DataTable SelectFormForum(string sql,int start,int size,string tablename)
    {
    try
    {
    SqlConnection sqlConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["Forum"]);
    SqlDataAdapter sqlAdapter1 = new SqlDataAdapter(sql, sqlConnection);
    DataSet returns = new DataSet();
    sqlAdapter1.Fill(returns,start,size,tablename);sqlConnection.Close();return returns.Tables[0];
    }
    catch (Exception ex)
    {
    throw (ex);
    }
    }另,很佩服楼主的这种做法,不过我一般是用存储过程,在程序里没有用过一句SQL语句
      

  4.   

    数据连接打开后最好关闭,操作完成后关闭,需要再打开!
    对数据连接最好采用异常处理,将连接操作放在try{}catch{}里面分页在显示时实现!!如Datagrid分页显示。
      

  5.   

    放在try{}catch{}里面阿我也是习惯存储过程,
    为了防止注入试攻击。怕了现在!!
    呵呵
      

  6.   

    catch (Exception ex)
    {
    Response.Write("<script>alert('出错了!!')</script>");
    }报错:
    E:\site\moban\DbClass.cs(43): 找不到类型或命名空间名称“Response”(是否缺少 using 指令或程序集引用?)
      

  7.   

    public static DataTable SelectFormForum(string sql,int start,int size,string tablename
    {
    SqlConnection sqlConnection=new SqlConnection();
    try
    {
    sqlConnection.ConnectionString = Convert.Tostring(System.Configuration.ConfigurationSettings.AppSettings["Forum"]);
    SqlDataAdapter sqlAdapter1 = new SqlDataAdapter(sql, sqlConnection);
    DataSet returns = new DataSet();
    sqlAdapter1.Fill(returns,start,size,tablename);
    return returns.Tables[0];
    }
    catch (Exception ex)
    {
    throw (ex);
    }
    fianlly
    {
    sqlConnection.Close();
    }
    }
      

  8.   

    public static DataTable SelectFormForum(string sql,int start,int size,string tablename
    {
    SqlConnection sqlConnection=new SqlConnection();
    try
    {
    sqlConnection.ConnectionString = Convert.Tostring(System.Configuration.ConfigurationSettings.AppSettings["Forum"]);
    SqlDataAdapter sqlAdapter1 = new SqlDataAdapter(sql, sqlConnection);
    DataSet returns = new DataSet();
    sqlAdapter1.Fill(returns,start,size,tablename);
    return returns.Tables[0];
    }
    catch (Exception ex)
    {
    throw (ex);
    }
    fianlly
    {
    sqlConnection.Close();
    }
    }
      

  9.   

    用ms的sqlhelper不好么?省得自己写多麻烦,传一个sql就都解决了
      

  10.   

    to   lovefootball(蓝色咖啡) :我试过sqlhelper但是没成功你能发一个给我吗???
      

  11.   

    加上fianlly
    {
    sqlConnection.Close();
    }
    这样的话不管会不会报异常都能关闭连接,不然的话,如果报异常了连接就没有地方管了
      

  12.   

    还有分页也可以这样写
    比如
    string start = "10";//数据开始行号
    string  size = "10";//数据结束行号
    string end= Convert.Tostring( Convert.ToInt32(start ) + Convert.ToInt32(size) );//计算数据结束行号
    string sql = "select * from (select top "+ size + "  * from (select top "+ end + "  * from Authors order by au_id desc) temp1 order by au_id asc) temp2 ";
    //au_id 为Authors 的主键这样的话,那个方法就可以不用tablename这个参数了,
    sqlAdapter1.Fill(returns,start,size,tablename);
    就可以直接写成sqlAdapter1.Fill(returns);这样的性能还好。