SQLdata是什么?
公共类的编写可以减少重复代码的编写,有利于代码维护。
创建类文件的方法为:在解决方案资源管理器的项目中,右键单击项目文件,在弹出的快捷菜单中选择“添加新项”,在弹出的“添加新项”对话框中选择“类”,修改名称为SqlData.cs。如图26.5所示。
图26.5 创建类文件
1.SqlData类中的全局变量
在SqlData类中声明了3个全局变量,以便在下面的程序代码中能够重复使用,避免了重复编写相同的代码段,声明全局变量的位置和变量类型的代码如下:
using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;//引用数据库命名空间using System.Data.SqlClient;/// <summary>/// SqlData 的摘要说明/// </summary>public class SqlData{private SqlConnection sqlcon; //申明一个SqlConnection对象private SqlCommand sqlcom; //申明一个SqlCommand对象private SqlDataAdapter sqldata; //申明一个SqlDataAdapter对象 public SqlData(){//// TODO: 在此处添加构造函数逻辑//}//以下为该类中的其他方法… …}
注意:#region预处理器指令在使用Visual Studio代码编辑器的大纲显示功能时,指定可展开或折叠的代码块。这个功能非常实用,尤其在编辑复杂的类时,可以使得代码结构更加清晰,在查询代码时可以快速地找到需要的代码行,读者在初学时一定要学会运用这种预处理器指令的方法,养成良好的编程习惯。
#region name
此处name是希望给予将出现在Visual Studio代码编辑器中的区域的名称。
2.SqlData类中的构造函数
构造函数中包含连接数据库的字符串,当声明一个类的对象时,将连接数据库。
#region 构造函数/// <summary>/// 构造函数,初始化时连接数据库/// </summary>public SqlData(){sqlcon = new SqlConnection(ConfigurationManager.AppSettings["conStr"]);sqlcon.Open(); //打开链接}#endregion
3.SqlData类中的BindData(GridView dl,string SqlCom)方法
BindData方法用来绑定用户控件,返回值为Boolean型,主要用来绑定页面中的GridView控件,执行成功后返回True,否则返回False。
BindData方法主要设计技术要点如下。
GridView控件的DataBind()方法表示要对数据源绑定后,将数据显示到相应的控件中。
try{…}catch{…}finally{…}语句是程序当中的异常处理机制,通过它可以很好地解决程序当中的异常问题。
GridView控件的DataSource属性表示将指定的数据源绑定到控件上。
sqlcon.Close()关闭当前与数据库的连接。
#region 绑定用户页面中的GridView控件/// <summary>/// 此方法实现数据绑定到GridView中/// </summary>/// <param name="dl">要绑定的控件</param>/// <param name="SqlCom">要执行的SQL语句</param>/// <returns></returns>public bool BindData(GridView dl, string SqlCom){dl.DataSource = this.ExceDS(SqlCom);try{dl.DataBind();return true;}catch{return false;}finally{sqlcon.Close();}}#endregion
4.SqlData类中的ExceSQL(string SqlCom)方法
ExecSQL方法用来执行SQL语句,返回值为Boolean型,主要用于对数据库中数据执行添加、修改、删除的操作,相应功能执行成功后返回True,否则返回False。
ExceSQL方法主要设计技术要点如下。
SqlCommand对象表示要对SQL Server数据库执行的一个SQL语句或存储过程。
SqlCommand类的ExecuteNonQuery()方法对连接执行SQL语句并返回受影响的行数。
#region 执行SQL语句/// <summary>/// 此方法用来执行SQL语句/// </summary>/// <param name="SqlCom">要执行的SQL语句</param>/// <returns></returns>public bool ExceSQL(string SqlCom){sqlcom = new SqlCommand(SqlCom,sqlcon);try{sqlcom.ExecuteNonQuery();return true;}catch{
return false;
}
finally
{
sqlcon.Close();
}
}
#endregion
5.SqlData类中的ExceDS(string SqlCom)方法
ExecDS方法用来返回DataSet类型的数据,并将数据填充到数据集中,相应功能执行成功后返回ds。
ExceDS方法主要设计技术要点如下。
SqlDataAdapter类用于填充DataSet并更新SQL Server数据库的一组数据命令和一个数据库连接。
SqlDataAdapter类的Fill方法是可重载的,在此主要实现填充数据集。
#region 返回DataSet类型数据/// <summary>/// 此方法返回一个DataSet类型/// </summary>/// <param name="SqlCom">要执行的SQL语句</param>/// <returns></returns>public DataSet ExceDS(string SqlCom){try{sqlcom = new SqlCommand(SqlCom, sqlcon);sqldata = new SqlDataAdapter();sqldata.SelectCommand = sqlcom;DataSet ds = new DataSet();sqldata.Fill(ds);return ds;}finally{sqlcon.Close();}}#endregion
注意:DataSet是ADO.NET结构的主要组件,它是从数据源中检索到的数据在内存中的缓存。在典型的多层实现中,用于创建和刷新DataSet并依次更新原始数据的步骤包括:通过DataAdapter使用数据源中的数据生成和填充DataSet中的每个DataTable;通过添加、更新或删除DataRow对象更改单个DataTable对象中的数据;调用GetChanges方法以创建只反映对数据进行的更改的第二个DataSet;调用DataAdapter的Update方法,并将第二个DataSet作为参数传递;调用Merge方法将第二个DataSet中的更改合并到第一个中;针对DataSet调用AcceptChanges或者调用RejectChanges以取消更改。
6.SqlData类中的ExceRead(string SqlCom)方法
ExceRead方法用来返回SqlDataReader类型的数据,相应功能执行成功后返回SqlDataReader的对象名read。
#region 返回SqlDataReader类型的数据/// <summary>/// 此方法返回一个SqlDataReader类型的参数/// </summary>/// <param name="SqlCom"></param>/// <returns></returns>public SqlDataReader ExceRead(string SqlCom){sqlcom = new SqlCommand(SqlCom, sqlcon);SqlDataReader read = sqlcom.ExecuteReader();return read;}#endregion
注意:若要创建SqlDataReader,必须调用SqlCommand对象的ExecuteReader方法,而不要直接使用构造函数。在使用SqlDataReader时,关联的SqlConnection正忙于为SqlDataReader服务,对SqlConnection无法执行任何其他操作,只能将其关闭。除非调用SqlDataReader的Close方法,否则会一直处于此状态。例如,在调用Close之前,无法检索输出参数。SqlDataReader的用户可能会看到在读取数据时另一进程或线程对结果集所做的更改。但是,确切的行为与执行时间有关。当SqlDataReader关闭后,只能调用IsClosed和RecordsAffected属性。尽管当SqlDataReader存在时可以访问RecordsAffected属性,但是请始终在返回RecordsAffected的值之前调用Close,以保证返回精确的值。
创建类文件的方法为:在解决方案资源管理器的项目中,右键单击项目文件,在弹出的快捷菜单中选择“添加新项”,在弹出的“添加新项”对话框中选择“类”,修改名称为SqlData.cs。如图26.5所示。
图26.5 创建类文件
1.SqlData类中的全局变量
在SqlData类中声明了3个全局变量,以便在下面的程序代码中能够重复使用,避免了重复编写相同的代码段,声明全局变量的位置和变量类型的代码如下:
using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;//引用数据库命名空间using System.Data.SqlClient;/// <summary>/// SqlData 的摘要说明/// </summary>public class SqlData{private SqlConnection sqlcon; //申明一个SqlConnection对象private SqlCommand sqlcom; //申明一个SqlCommand对象private SqlDataAdapter sqldata; //申明一个SqlDataAdapter对象 public SqlData(){//// TODO: 在此处添加构造函数逻辑//}//以下为该类中的其他方法… …}
注意:#region预处理器指令在使用Visual Studio代码编辑器的大纲显示功能时,指定可展开或折叠的代码块。这个功能非常实用,尤其在编辑复杂的类时,可以使得代码结构更加清晰,在查询代码时可以快速地找到需要的代码行,读者在初学时一定要学会运用这种预处理器指令的方法,养成良好的编程习惯。
#region name
此处name是希望给予将出现在Visual Studio代码编辑器中的区域的名称。
2.SqlData类中的构造函数
构造函数中包含连接数据库的字符串,当声明一个类的对象时,将连接数据库。
#region 构造函数/// <summary>/// 构造函数,初始化时连接数据库/// </summary>public SqlData(){sqlcon = new SqlConnection(ConfigurationManager.AppSettings["conStr"]);sqlcon.Open(); //打开链接}#endregion
3.SqlData类中的BindData(GridView dl,string SqlCom)方法
BindData方法用来绑定用户控件,返回值为Boolean型,主要用来绑定页面中的GridView控件,执行成功后返回True,否则返回False。
BindData方法主要设计技术要点如下。
GridView控件的DataBind()方法表示要对数据源绑定后,将数据显示到相应的控件中。
try{…}catch{…}finally{…}语句是程序当中的异常处理机制,通过它可以很好地解决程序当中的异常问题。
GridView控件的DataSource属性表示将指定的数据源绑定到控件上。
sqlcon.Close()关闭当前与数据库的连接。
#region 绑定用户页面中的GridView控件/// <summary>/// 此方法实现数据绑定到GridView中/// </summary>/// <param name="dl">要绑定的控件</param>/// <param name="SqlCom">要执行的SQL语句</param>/// <returns></returns>public bool BindData(GridView dl, string SqlCom){dl.DataSource = this.ExceDS(SqlCom);try{dl.DataBind();return true;}catch{return false;}finally{sqlcon.Close();}}#endregion
4.SqlData类中的ExceSQL(string SqlCom)方法
ExecSQL方法用来执行SQL语句,返回值为Boolean型,主要用于对数据库中数据执行添加、修改、删除的操作,相应功能执行成功后返回True,否则返回False。
ExceSQL方法主要设计技术要点如下。
SqlCommand对象表示要对SQL Server数据库执行的一个SQL语句或存储过程。
SqlCommand类的ExecuteNonQuery()方法对连接执行SQL语句并返回受影响的行数。
#region 执行SQL语句/// <summary>/// 此方法用来执行SQL语句/// </summary>/// <param name="SqlCom">要执行的SQL语句</param>/// <returns></returns>public bool ExceSQL(string SqlCom){sqlcom = new SqlCommand(SqlCom,sqlcon);try{sqlcom.ExecuteNonQuery();return true;}catch{
return false;
}
finally
{
sqlcon.Close();
}
}
#endregion
5.SqlData类中的ExceDS(string SqlCom)方法
ExecDS方法用来返回DataSet类型的数据,并将数据填充到数据集中,相应功能执行成功后返回ds。
ExceDS方法主要设计技术要点如下。
SqlDataAdapter类用于填充DataSet并更新SQL Server数据库的一组数据命令和一个数据库连接。
SqlDataAdapter类的Fill方法是可重载的,在此主要实现填充数据集。
#region 返回DataSet类型数据/// <summary>/// 此方法返回一个DataSet类型/// </summary>/// <param name="SqlCom">要执行的SQL语句</param>/// <returns></returns>public DataSet ExceDS(string SqlCom){try{sqlcom = new SqlCommand(SqlCom, sqlcon);sqldata = new SqlDataAdapter();sqldata.SelectCommand = sqlcom;DataSet ds = new DataSet();sqldata.Fill(ds);return ds;}finally{sqlcon.Close();}}#endregion
注意:DataSet是ADO.NET结构的主要组件,它是从数据源中检索到的数据在内存中的缓存。在典型的多层实现中,用于创建和刷新DataSet并依次更新原始数据的步骤包括:通过DataAdapter使用数据源中的数据生成和填充DataSet中的每个DataTable;通过添加、更新或删除DataRow对象更改单个DataTable对象中的数据;调用GetChanges方法以创建只反映对数据进行的更改的第二个DataSet;调用DataAdapter的Update方法,并将第二个DataSet作为参数传递;调用Merge方法将第二个DataSet中的更改合并到第一个中;针对DataSet调用AcceptChanges或者调用RejectChanges以取消更改。
6.SqlData类中的ExceRead(string SqlCom)方法
ExceRead方法用来返回SqlDataReader类型的数据,相应功能执行成功后返回SqlDataReader的对象名read。
#region 返回SqlDataReader类型的数据/// <summary>/// 此方法返回一个SqlDataReader类型的参数/// </summary>/// <param name="SqlCom"></param>/// <returns></returns>public SqlDataReader ExceRead(string SqlCom){sqlcom = new SqlCommand(SqlCom, sqlcon);SqlDataReader read = sqlcom.ExecuteReader();return read;}#endregion
注意:若要创建SqlDataReader,必须调用SqlCommand对象的ExecuteReader方法,而不要直接使用构造函数。在使用SqlDataReader时,关联的SqlConnection正忙于为SqlDataReader服务,对SqlConnection无法执行任何其他操作,只能将其关闭。除非调用SqlDataReader的Close方法,否则会一直处于此状态。例如,在调用Close之前,无法检索输出参数。SqlDataReader的用户可能会看到在读取数据时另一进程或线程对结果集所做的更改。但是,确切的行为与执行时间有关。当SqlDataReader关闭后,只能调用IsClosed和RecordsAffected属性。尽管当SqlDataReader存在时可以访问RecordsAffected属性,但是请始终在返回RecordsAffected的值之前调用Close,以保证返回精确的值。
温馨提示:答案为网友推荐,仅供参考