【知识要点】
(1)通用类
【问题提出】
我们发现“连接数据库”、加载“GridView”、加载“下拉列表框”等等有着太多重复的代码,能不能简化代码呢?
而有一天,却突然发现别人加载“GridView”的代码却只有两行,你惊呆了!
【在线指导】
我们通过一个通用类文件DataAccess.cs、Web.config简化我们的代码不是梦!
操作步骤:
(1)创建Web.config文件,主要作用是建立“连接数据库”字符串;
(2)创建DataAccess.cs文件,创建数据库操作代码;
(3)在我们程序中调用通过类的相关函数。
一、创建Web.config
1、设计界面
(1)打开Hello项目,单击“启动页>最近使用的项目>Hello”。
(2)在“解决方案资源管理器”中添加“Web.config”。
2、添加代码
(1)打开“Web.config”,添加红色代码。
<?xml version="1.0"?>
<!--
有关如何配置 ASP.NET 应用程序的详细消息,请访问
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="Hello.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<connectionStrings>
<add name="ConnDb" connectionString="Server=www.woshicainiao.net;DataBase=SuperMarket;User ID=sa;pwd=xxx" />
</connectionStrings>
<system.web>
<pages enableEventValidation="false"/>
<compilation debug="true" targetFramework="4.0"/>
</system.web>
<applicationSettings>
<Hello.Properties.Settings>
<setting name="Hello_Calc_Calculator" serializeAs="String">
<value>http://localhost:90/Calculator.asmx</value>
</setting>
</Hello.Properties.Settings>
</applicationSettings>
</configuration>
注:红色代码主要用于配置数据库连接字符串。
二、创建通用类DataAccess.cs
1、设计界面
(1)打开Hello项目,单击“启动页>最近使用的项目>Hello”。
(2)在“解决方案资源管理器”中添加“DataAccess.cs”页面。
2、添加代码
(1)打开“DataAccess.cs”,把以下代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Hello
{
public class DataAccess
{
}
}
替换为以下代码:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Drawing;
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;
using System.Text;
using System.Text.RegularExpressions;
namespace Hello
{
public class DataAccess
{
#region 属性
protected static SqlConnection Conn = new SqlConnection();
protected static SqlCommand Comm = new SqlCommand();
#endregion
public DataAccess()
{
//init();
}
#region 内部函数 静态方法中不会执行DataAccess()构造函数
// 打开数据库连接
private static void OpenConnection()
{
if (Conn.State == ConnectionState.Closed)
{
//此连接字符串可在Web.config中配置
Conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnDb"].ConnectionString;
Comm.Connection = Conn;
try
{
Conn.Open();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
}
// 返回数据库连接
public static SqlConnection GetConnection()
{
if (Conn.State == ConnectionState.Closed)
{
//此连接字符串可在Web.config中配置
Conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnDb"].ConnectionString;
try
{
Conn.Open();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
return (Conn);
}
// 关闭数据库连接
public static void DisConnection()
{
if (Conn.State == ConnectionState.Open)
{
Conn.Close();
Conn.Dispose();
}
}
/// <summary>
/// 关闭当前数据库连接
/// </summary>
private static void CloseConnection()
{
if (Conn.State == ConnectionState.Open)
{
Conn.Close();
Conn.Dispose();
Comm.Dispose();
}
}
#endregion
// 返回指定Sql语句的DataTable
public static DataTable GetDataTable(string sqlstr)
{
SqlDataAdapter Da = new SqlDataAdapter();
DataTable Datatable = new DataTable();
try
{
OpenConnection();
Comm.CommandType = CommandType.Text;
Comm.CommandText = sqlstr;
Da.SelectCommand = Comm;
Da.Fill(Datatable);
}
catch (Exception e)
{
throw new Exception(e.Message);
}
finally
{
CloseConnection();
}
return Datatable;
}
//加载GridView
public static void LoadGridView(string sqlstr, GridView oGridView, string cPrimaryKey)
{
try
{
OpenConnection();
DataTable myTable = GetDataTable(sqlstr);
oGridView.DataSource = myTable.DefaultView;
oGridView.DataKeyNames = new String[] { cPrimaryKey };
oGridView.DataBind();
}
catch
{
}
finally
{
CloseConnection();
}
}
}
}
三、创建SqlGridView-DataAccess.aspx
1、设计界面
(1)添加“SqlGridView-DataAccess.aspx”页面。
(2)我们在界面上拖1个GridVIew。
GridView属性为:gvClient。
2、添加代码
(1)双击SqlGridView-DataAccess.aspx页面空白处,在Page_Load()处:
string ClientSql = "SELECT * FROM Client";
DataAccess.LoadGridView(ClientSql, gvClient, "cClientCode");
讲解:
DataAccess.LoadGridView(SQL查询语句,GridView,表主键)我们以后就可以通过DataAccess的LoadGridView函数完成加载GridView。
是不很简单,我们将来会把很多工作放在DataAccess中,使我们编码的工作变得更简单。
(2)现在我们从“解决方案资源管理器”中,选择“SqlGridView-DataAccess.aspx”,单击右键“在浏览器中查看”。