第40章、通用类DataAccess

 

【知识要点】
  (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”,单击右键“在浏览器中查看”。   

你可能感兴趣的:(第40章、通用类DataAccess)