数据库操作

 ADO的结构图如下:

   connection       commandText

sql---->sqlConnection--->sqlCammand.ExecuteNonQuery():增,删,改(返回一个值)受影响的行数。

                                                               .ExecuteScalar():查询,(返回查询结果的第一行第一列的值)。

                                                               .ExecuteReader()----->SqlDataReader.(数据阅读器),查询(不能增删改)

sql---->sqlConnection--->sqlCammand --->  SqlDataAdapter .InsertCommand    增       |

                                              (数据适配器) SqlDataAdapter .DeleteCommand    删      |

                                                                         SqlDataAdapter . UpdateCommand    改     |    fill ()---->DataSet(数据集)

                                                                           SqlDataAdapter . SelectCommand     查     |

 示例说明:

 

 SqlConnection myConn;    //用于连接数据库
    SqlCommand myCmd;        //用于执行Sql语句
    DataSet ds;              //数据集
    SqlDataAdapter adapt;    //填充数据集


 public DbClass()
 {
 }
    /// <summary>
    /// 连接数据库
    /// </summary>
    /// <returns>返回SqlConnection对象</returns>
    public SqlConnection GetConnection()
    {
      

        string myStr = Convert.ToString(ConfigurationManager.ConnectionStrings["SqlServices"]);
         myConn = new SqlConnection(myStr );
         return myConn;
    }

    /// <summary>
    /// 更新数据库
    /// </summary>
    /// <param name="strSql">sqlStr执行的SQL语句</param>
    public void ExecNonQuery(string strSql)       //主要用于执行不需返回值的操作:更新,插入,删除
    {
        
        try
        {
            myConn = GetConnection();//与数据库连接
            myCmd = new SqlCommand();//初始化SqlCommand类对象
            myCmd.Connection = myConn;

            myCmd.CommandText = strSql;
            if (myCmd.Connection.State != ConnectionState.Open)
            {
                myCmd.Connection.Open();//打开与数据库的连接
            }
            myCmd.ExecuteNonQuery();//执行Sql操作,并返回受影响的行数

        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message, ex);

        }
        finally
        {
            if (myCmd.Connection.State == ConnectionState.Open)
            {//断开连接,释放资源
                myCmd.Connection.Close();
                myConn.Dispose();
                myCmd.Dispose();

            }
        }
    }
    /// <summary>
    /// 返回一个值
    /// </summary>
    /// <param name="strSql">sqlStr执行的SQL语句</param>
    /// <returns>返回获取的值</returns>
    public string ExecScalar(string strSql)  //        有返回值,主要用于查询
    {
     
        try
        {
            myConn = GetConnection();//与数据库连接
            myCmd = new SqlCommand();//初始化SqlCommand类对象
            myCmd.Connection = myConn;

            myCmd.CommandText = strSql;

            if (myCmd.Connection.State != ConnectionState.Open)
            {
                myCmd.Connection.Open();//打开与数据库的连接
            }
            //使用SqlCommand对象的ExecuteScalar方法返回第一行第一列的值
            strSql=Convert.ToString(myCmd.ExecuteScalar());
            return strSql ;

        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message, ex);

        }
        finally
        {
            if (myCmd.Connection.State == ConnectionState.Open)
            {//断开连接,释放资源
                myConn.Dispose();
                myCmd.Connection.Close();
                myCmd.Dispose();

            }
        }
    
    }
    /// <summary>
    /// 说  明:  GetDataSet数据集,返回数据源的数据表
    /// 返回值:  数据源的数据表
    /// 参  数:  sqlStr执行的SQL语句,TableName 数据表名称
    /// </summary>
    public DataTable GetDataSet(string strSql, string TableName)
    {
        ds= new DataSet();
        try
        {
            myConn = GetConnection();//与数据库连接

            adapt = new SqlDataAdapter(strSql, myConn); //实例化SqlDataAdapter类对象
            adapt.Fill(ds,TableName);//填充数据集

            return ds.Tables[TableName];//返回数据集DataSet的表的集合

        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message, ex);

        }
        finally
        {//断开连接,释放资源
            myConn.Close();
            adapt.Dispose();
            ds.Dispose();
            myConn.Dispose();
            
        }

    }

原文地址:https://www.cnblogs.com/tiandi/p/1980403.html