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(); } }