【C#】机房收费系总结-七层架构之DBASSIST

写在前面的

  • 之前的文章里面说到过用C#写的原因,这里就不再多说了。由于自己在敲的过程中并没有找到类似的代码,只能自己一点一点的摸索。不过也还是要感谢那些SQLHELPER中C#的用法给我的启发。

  • 接下来就把我的7层架构中的所有代码都一一记录下来留给后面的人做参考吧,虽然不一定正确,但还是有一些参考价值的。

DBAssist

介绍

  • 比起SqlHelper,我更喜欢称这个工具类为DBAssist,因为不一定只是SQL,还有其他的数据库文件需要用到它,所以不要在名称上写死而给别人一种潜在的错误信息。

  • 其次,作为工具类,DBAssist的作用就在于方便在写存储过程的时候对数据库进行调用(试想每调用一次数据库都要写一大堆代码的情况吧)

代码

第一种

  • 首先我们先来建立一个没有SQLparameter的DBAssist,代码如下:
'ConnectionString需要自己手动添加'
 public static DataTable SqlExecute(string cmdtext,CommandType typecmd)
{
'建立数据链接'
SqlConnection conn = new SqlConnection(ConnectionString);
'创建SQL命令'
SqlCommand cmd = default(SqlCommand);
'初始化DATATABLE'
DataTable table = null;
'实例化DATAADAPTER'
SqlDataAdapter adper = default(SqlDataAdapter);
'执行类型为CMDTEXT的命令'
cmd = new SqlCommand(cmdtext, conn);
'确定COMMANDTYPE'
cmd.CommandType = typecmd;
'使用CMD填充ADAPTER'
adper = new SqlDataAdapter(cmd);
'实例化TABEL表'
table = new DataTable();
'优化CONN的访问状态'
if (conn.State==ConnectionState.Closed)
{
    conn.Open();
    '填充DT'
    adper.Fill(table);
}
else
{
    conn.Close();
}
'返回DT'
    return table;
}

有了上面这一个DBASSIST,我们就可以执行一些简单的SQL查询操作,由于没有了相应的SQLPARAMETER,所以只能在SQLSTRING中直接写死查询的条件,这样就会给一些特定的查询带来不便。

第二种

  • 有了上变不含SQLPARAMETER的DBASSIST,接下来如果需要添加可变的条件,就需要用到Slqparameter,由于我们在写存储过程的时候有时会添加更多的条件,所以我们需要用到Sqlparameter的“组”,所以需要用到“Sqlparameter []”
 public static DataTable acquireDataTable(string cmdTxt, CommandType cmdType, SqlParameter[] para)
{
//基本和上一个DBASSIST无差别,只是在CMD中加入了SQLPARAMETER,来进行特殊条件的查询
SqlConnection conn = new SqlConnection(ConnectionString);
//创建连接
SqlCommand cmd = default(SqlCommand);
//定义变量名
DataSet daset = null;
//定义数据适配器,DATASET表示断开的连接源
SqlDataAdapter adpter = default(SqlDataAdapter);
cmd = new SqlCommand(cmdTxt, conn);
cmd.CommandType = cmdType;
cmd.Parameters.AddRange(para);
//命令中的执行参数
adpter = new SqlDataAdapter(cmd);
//初始化SQLADAPTER,并且用指定的CMD作为SELECTCOMMAND的属性
daset = new DataSet();
if (conn.State == ConnectionState.Closed)
{
    conn.Open();
    adpter.Fill(daset);
}
else
{
    conn.Close();
}

    return daset.Tables[0];
    //由于SQLPARAMETER的存在,所以只需要返回符合条件的第一行即可,此处也可以设为'adpter.fill(datable)'然后'return datatable'也可以
}

第三种

  • 由于VS2015拥有了一个强大的功能,就是在ADO.NET中我们可以看到DATATABEL中获取的表信息而不用再像以前SQLHELPER中编写受影响的行等相关命令,即便这样,有些人也希望我们可以拥有一个类似的DBASSIST来完成这样的操作,毕竟不能把代码写死不是么?
public static int ExecuteSQL(string strconn, string SQLstring)
{
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
    SqlCommand cmd = new SqlCommand(SQLstring, conn)
    try
    {
        conn.Open();
        int rows = cmd.ExecuteNonQuery();
        return rows;
        //这里就会显示多少行收到了影响
    }
    catch (System.Data.SqlClient.SqlException e)
    {
        conn.Close();
        throw new Exception(e.Message);

    }
}
}

总结

  • 基本上在我们现在的编程中这三种返回表和直接执行方法的DBASSIST已经可以满足最最基础的要求,如果我们还需要DBASSIST为我们继续返回其他类型的值,可以根据自己的需求更改,现在感觉C#确实比VB.NET要强大不少,因为一旦掌握了它们的用法,C#的灵活性就体现了出来

  • 总之,所有的DBASSIST都是自己慢慢积累的结果,因为这些DBASSIST都是自己根据ADO.NET一点一点敲出来的,所以收获了非常多的知识,如果还有更好的DBASSIST我们都可以自己进行编写,达到更加高效的目的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 28
    评论
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值