DataBase公共类(1)
公共类database
1,打开数据库
2,关闭数据库
3,创建SqlCommand命令方法
4,执行SQL语句方法
5,将DataReader对 象转换成DataTable对象方法
《C#项目案例分析》第1章进销存管理系统,本章就使用C# 4.0+SQL Server 2005技术开发一个进销存管理系统。本节为大家介绍DataBase公共类。
1.3.1 DataBase公共类(1)
DataBase类中自定义了Open、Close、MakeInParam、MakeParam、RunProc、RunProcReturn、CreateDataAdaper和CreateCommand等多个方法,下面分别对它们进行介绍。
1.Open方法
建立数据库连接主要是通过SqlConnection类来实现,并初始化数据库连接字符串,然后通过State属性判断连接状态,如果数据库连接状态为关,则打开数据库连接。实现打开数据库连接的Open方法的代码如下:
代码位置:配套资源\mr\01\EMS\EMS\BaseClass\DataBase.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;//引入命名空间
namespace _28_CRM_System
{
class DataBase
{
SqlConnection con;//创建连接对象
private void Open()
{
if (con == null) //判断连接对象是否为空
{
//创建数据库连接对象
con = new SqlConnection("Data Source=MRWXK\\WANGXIAOKE;DataBase= db_EMS;User ID=sa;PWD=");
}
if (con.State == System.Data.ConnectionState.Closed) //判断数据库连接是否关闭
con.Open(); //打开数据库连接
}
说明:
在运行本系统时,读者需要将Open方法中的数据库连接字符串中的Data Source属性修改为本机的SQL Server 2005服务器名,并且将User ID属性和PWD属性分别修改为本机登录SQL Server 2005服务器的用户名和密码。
2.Close方法
关闭数据库连接主要是通过SqlConnection对象的Close方法来实现。自定义Close方法关闭数据库连接的代码如下:
代码位置:配套资源\mr\01\EMS\EMS\BaseClass\DataBase.cs
public void Close()
{
if (con != null) //判断连接对象是否不为空
con.Close(); //关闭数据库连接
}
3.MakeInParam和MakeParam方法
本系统向数据库中读写数据是以参数形式实现的。MakeInParam方法用于传入参数,MakeParam方法用于转换参数。实现MakeInParam方法和MakeParam方法的关键代码如下:
代码位置:配套资源\mr\01\EMS\EMS\BaseClass\DataBase.cs
//转换参数
public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value)
{
//创建SQL参数
return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
}
public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value) //初始化参数值
{
SqlParameter param; //声明SQL参数对象
if (Size > 0) //判断参数字段是否大于0
param = new SqlParameter(ParamName, DbType, Size);//根据指定的类型和大小创建SQL参数
else
param = new SqlParameter(ParamName, DbType);//根据指定的类型创建SQL参数
param.Direction = Direction; //设置SQL参数的类型
if (!(Direction == ParameterDirection.Output && Value == null))//判断是否为输出参数
param.Value = Value; //设置参数返回值
return param; //返回SQL参数
}
1.3.1 DataBase公共类(2)
4.RunProc方法
RunProc方法为可重载方法,用来执行带SqlParameter参数的命令文本,其中,***种重载形式主要用于执行添加、修改和删除等操作;第二种重载形式用来直接执行SQL语句,如数据库备份与数据库恢复。实现可重载方法RunProc的关键代码如下:
代码位置:配套资源\mr\01\EMS\EMS\BaseClass\DataBase.cs
public int RunProc(string procName, SqlParameter[] prams) //执行命令
{
SqlCommand cmd = CreateCommand(procName, prams); //创建SqlCommand命令对象
cmd.ExecuteNonQuery(); //执行SQL命令
this.Close(); //关闭数据库连接
return (int)cmd.Parameters["ReturnValue"].Value; //得到执行成功返回值
}
public int RunProc(string procName) //直接执行SQL语句
{
this.Open(); //打开数据库连接
SqlCommand cmd = new SqlCommand(procName, con); //创建SqlCommand命令对象
cmd.ExecuteNonQuery(); //执行SQL命令
this.Close(); //关闭数据库连接
return 1; //返回1,表示执行成功
}
5.RunProcReturn方法
RunProcReturn方法为可重载方法,返回值类型为DataSet,其中,***种重载形式主要用于执行带SqlParameter参数的查询命令文本;第二种重载形式用于直接执行查询SQL语句。可重载方法RunProcReturn的关键代码如下:
代码位置:配套资源\mr\01\EMS\EMS\BaseClass\DataBase.cs
//执行查询命令文本,并且返回DataSet数据集
public DataSet RunProcReturn(string procName, SqlParameter[] prams,string tbName)
{
SqlDataAdapter dap = CreateDataAdaper(procName, prams); //创建桥接器对象
DataSet ds = new DataSet(); //创建数据集对象
dap.Fill(ds, tbName); //填充数据集
this.Close(); //关闭数据库连接
return ds; //返回数据集
}
//执行命令文本,并且返回DataSet数据集
public DataSet RunProcReturn(string procName, string tbName)
{
SqlDataAdapter dap = CreateDataAdaper(procName, null); //创建桥接器对象
DataSet ds = new DataSet(); //创建数据集对象
dap.Fill(ds, tbName); //填充数据集
this.Close(); //关闭数据库连接
return ds; //返回数据集
}
6.CreateDataAdaper方法
CreateDataAdaper方法将带参数SqlParameter的命令文本添加到SqlDataAdapter中,并执行命令文本。CreateDataAdaper方法的关键代码如下:
代码位置:配套资源\mr\01\EMS\EMS\BaseClass\DataBase.cs
private SqlDataAdapter CreateDataAdaper(string procName, SqlParameter[] prams)
{
this.Open(); //打开数据库连接
SqlDataAdapter dap = new SqlDataAdapter(procName, con); //创建桥接器对象
dap.SelectCommand.CommandType = CommandType.Text;//指定要执行的类型为命令文本
if (prams != null) //判断SQL参数是否不为空
{
foreach (SqlParameter parameter in prams) //遍历传递的每个SQL参数
dap.SelectCommand.Parameters.Add(parameter); //将SQL参数添加到执行命令对象中
}
//加入返回参数
dap.SelectCommand.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, 0, 0,string.Empty, DataRowVersion.Default, null));
return dap; //返回桥接器对象
}
7.CreateCommand方法
CreateCommand方法将带参数SqlParameter的命令文本添加到CreateCommand中,并执行命令文本。CreateCommand方法的关键代码如下:
代码位置:配套资源\mr\01\EMS\EMS\BaseClass\DataBase.cs
private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
{
this.Open(); //打开数据库连接
SqlCommand cmd = new SqlCommand(procName, con);//创建SqlCommand命令对象
cmd.CommandType = CommandType.Text; //指定要执行的类型为命令文本
//依次把参数传入命令文本
if (prams != null) //判断SQL参数是否不为空
{
foreach (SqlParameter parameter in prams) //遍历传递的每个SQL参数
cmd.Parameters.Add(parameter); //将SQL参数添加到执行命令对象中
}
//加入返回参数
cmd.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4, Parameter Direction.ReturnValue, false, 0, 0,string.Empty, DataRowVersion.Default, null));
return cmd; //返回SqlCommand命令对象
}