using System;
using System.Collections.Generic;
using System.Web;
using System.Data.SqlClient;
using System.Data;
/// <summary>
///DB 的摘要说明
/// </summary>
public class DB
{
    public SqlConnection con = new SqlConnection();
    public SqlCommand cmd;
    public DataSet ds = new DataSet();
    public SqlDataAdapter sda;
    public string GetConnectionstring()
    {
        string constr = System.Configuration.ConfigurationManager.AppSettings.Get(0).ToString();
        return constr;
    }
    public DataSet GetDataTableBySql(string sqlstr)
    {
        ds.Clear();
        con.ConnectionString = GetConnectionstring();
        sda = new SqlDataAdapter(sqlstr,con);
        sda.Fill(ds);
        return ds;
    
    }
    public Boolean UpdateDataBySql(string sqlstr)
    {
        con.ConnectionString = GetConnectionstring();
        cmd = new SqlCommand(sqlstr,con);
        try
        {
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
            return true;
        }
        catch (SqlException)
        {
            con.Close();
            return false;
        }
             
    
    }
}
请问这个DB有没有写错,如果没有的话给我讲解一些思路,谢谢!

解决方案 »

  1.   

        try
            {
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
                return true;
            }
            catch (SqlException)
            {
                con.Close();
                return false;
            }就直接返回True了。意思是指要不是异常就是True 呗?
      

  2.   

    public DataSet GetDataTableBySql(string sqlstr)
        {
            ds.Clear();
            con.ConnectionString = GetConnectionstring();
            sda = new SqlDataAdapter(sqlstr,con);
            sda.Fill(ds);
            return ds;
        
        }
    这个函数里的ds每次最好new一个新的
      

  3.   

    在这个DB类中,存在3个方法:GetConnectionstring(),GetDataTableBySql,UpdateDataBySql。GetConnectionstring()就是在配置中获取连接字符串,GetDataTableBySql就是通过sql查询语句来获取所需要的查询结果并返回,UpdateDataBySql就是根据sql语句来更新数据库表的信息。
    在GetDataTableBySql中,先将DataSet 类型的实例ds先清空,然后再调用GetConnectionstring方法获取连接字符串,然后通过适配器来将查询结果保存,并用适配器中的Fill方法将结果放在ds中并返回。
    在UpdateDataBySql中,也是先尝试打开连接,执行ExecuteNonQuery方法,这样就可以将sql语句执行到数据库中,然后关闭连接。
      

  4.   


         public SqlCommand cmd;
         public DataSet ds = new DataSet();
         public SqlDataAdapter sda;
    /*定义在外面,每次用完后都无法及时回收,建议里面用到就在里面定义。*/public Boolean UpdateDataBySql(string sqlstr)
         {
             con.ConnectionString = GetConnectionstring();
             cmd = new SqlCommand(sqlstr,con);
             try
             {
                 con.Open();
                 cmd.ExecuteNonQuery();
                 con.Close();
                 return true;
             }
             catch (SqlException)
             {
                 con.Close();
                 return false;
             }
    /*不要在catch里面写con.close();在finally里面写;*/
      

  5.   

    catch是捕获异常的,你把异常屏蔽了。
      

  6.   

    、、、、、、、楼主可以去看看别人封装的 DBHelper 学习。
      

  7.   

    Quote: 引用 2 楼 gxingmin 的回复:

    public DataSet GetDataTableBySql(string sqlstr)
        {
            ds.Clear();
            con.ConnectionString = GetConnectionstring();
            sda = new SqlDataAdapter(sqlstr,con);
            sda.Fill(ds);
            return ds;
        
        }
    这个函数里的ds每次最好new一个新的,为什么要new一个新麻烦解释一下,谢谢?
      

  8.   


    new个新的就是重新初始化一下咯,不然同时操作的时候会出错的。
      

  9.   


    new个新的就是重新初始化一下咯,不然同时操作的时候会出错的。
    源错误: 
    行 24:         con.ConnectionString = GetConnectionstring();
    行 25:         sda = new SqlDataAdapter(sqlstr,con);
    行 26:         sda.Fill(ds);
    行 27:         return ds;
    显示实例失败,是不是会出现这样的问题,那要在那里解决呢?
      

  10.   

    不要这样罗
    public SqlConnection con = new SqlConnection();
        public SqlCommand cmd;
        public DataSet ds = new DataSet();//增,删,改不会用到,new出来干什么?浪费
        public SqlDataAdapter sda;另外微软在PetShop中有一个SqlHelper类
    你可以看看微软是怎么写的或看看别人是怎么写的http://www.cnblogs.com/why520crazy/articles/1677281.html
    http://blog.csdn.net/sabic/article/details/6633168
      

  11.   

     public DataSet GetDataTableBySql(string sqlstr)
        {
            ds=new DataSet();
            con.ConnectionString = GetConnectionstring();
            sda = new SqlDataAdapter(sqlstr,con);
            sda.Fill(ds);
            return ds;
        
        }
      

  12.   


    new个新的就是重新初始化一下咯,不然同时操作的时候会出错的。
    源错误: 
    行 24:         con.ConnectionString = GetConnectionstring();
    行 25:         sda = new SqlDataAdapter(sqlstr,con);
    行 26:         sda.Fill(ds);
    行 27:         return ds;
    显示实例失败,是不是会出现这样的问题,那要在那里解决呢?
    楼上已经说了。。还是建议下楼主去看看别人封装的 DBHelper 类,然后自己多用用。。
      

  13.   


    new个新的就是重新初始化一下咯,不然同时操作的时候会出错的。
    源错误: 
    行 24:         con.ConnectionString = GetConnectionstring();
    行 25:         sda = new SqlDataAdapter(sqlstr,con);
    行 26:         sda.Fill(ds);
    行 27:         return ds;
    显示实例失败,是不是会出现这样的问题,那要在那里解决呢?
    楼上已经说了。。还是建议下楼主去看看别人封装的 DBHelper 类,然后自己多用用。。多用用不是指用别人封装好的。。是指自己手打,各种调用都试试,最好刚开始能 F11 跟进看看执行步骤。