文档章节

DbHelper通用数据库类及增删改 使用示例

深圳大道
 深圳大道
发布于 2016/12/29 15:32
字数 993
阅读 35
收藏 0
DbHelper db = new DbHelper();
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    //新增数据
    protected void Button1_Click(object sender, EventArgs e)
    {
        List<FieldTypeValue> ftvlist = new List<FieldTypeValue>();
        ftvlist.Add(new FieldTypeValue("[D_Name]", "测试用户" + DateTime.Now.ToString("yyyyMMddhhmmss")));
        ftvlist.Add(new FieldTypeValue("[D_Password]", "测试密码" + DateTime.Now.ToString("yyyyMMddhhmmss")));
        ftvlist.Add(new FieldTypeValue("[D_Else]", "测试备注" + DateTime.Now.ToString("yyyyMMddhhmmss")));
        string sql = BuilderSql.createInsertSql("TestTable", ftvlist);
        int opFlag = db.ExecuteNonQuery(db.GetSqlStringCommand(sql));
        if (opFlag > 0) { JsHelper.Alert("新增成功!", Page); } else { JsHelper.Alert("新增失败!", Page); };
    }

    //修改数据
    protected void Button2_Click(object sender, EventArgs e)
    {
        List<FieldTypeValue> ftvlist = new List<FieldTypeValue>();
        ftvlist.Add(new FieldTypeValue("[D_Name]", "这是个错误dsadsadasd"));
        ftvlist.Add(new FieldTypeValue("[D_Password]", "aaa这是个错误,我还没有处理"));
        ftvlist.Add(new FieldTypeValue("[D_Else]", "aaa这是个错误,我还没有处理"));
        string sql = BuilderSql.createUpdateSql("TestTable", ftvlist, "D_ID", "1");
        int opFlag = db.ExecuteNonQuery(db.GetSqlStringCommand(sql));
        if (opFlag > 0) { JsHelper.Alert("修改成功!", Page); } else { JsHelper.Alert("修改失败!", Page); };
    }

    //删除数据
    protected void Button3_Click(object sender, EventArgs e)
    {
        string sql = BuilderSql.createDeleteSql("[TestTable]", "[D_Id]", "1");
        int opFlag = db.ExecuteNonQuery(db.GetSqlStringCommand(sql));
        if (opFlag > 0) { JsHelper.Alert("删除成功!", Page); } else { JsHelper.Alert("删除失败!", Page); };
    }

    //事务提交
    protected void Button4_Click(object sender, EventArgs e)
    {
        using (Trans t = new Trans())
        {
            try
            {
                db.ExecuteNonQuery(db.GetSqlStringCommand("insert into TestTable(D_Name,D_Password,D_Else) values('aaaaa1','bbbbbb1','cccccc1')"), t);
                db.ExecuteNonQuery(db.GetSqlStringCommand("insert into TestTable(D_Name,D_Password,D_Else) values('aaaaa2','bbbbbb2','cccccc2')"), t);
                db.ExecuteNonQuery(db.GetSqlStringCommand("insert into TestTable(D_Name,D_Password,D_Else) values('aaaaa3','bbbbbb3','cccccc3')"), t);
                db.ExecuteNonQuery(db.GetSqlStringCommand("insert into TestTable(D_Name,D_Password,D_Else) values('aaaaa4','bbbbbb4','cccccc4')"), t);
                db.ExecuteNonQuery(db.GetSqlStringCommand("insert into TestTable(D_Name,D_Password,D_Else) values('aaaaa5','bbbbbb5','cccccc5')"), t);
                t.Commit();
                JsHelper.Alert("事务提交成功!", Page);
            }
            catch
            {
                t.RollBack();
                JsHelper.Alert("事务提交失败!", Page);
            }
        }
    }






    //分页控件分页

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindGridViewData();
        }

    }

    private void BindGridViewData()
    {
        string strCondition = "";
        MSCL.PageHelper wp = new MSCL.PageHelper();
        wp.TableName = "TestTable";
        wp.KeyField = "D_Id";
        wp.SortName = "D_Id";
        wp.Condition = strCondition;
        wp.CurrentPageIndex = AspNetPager1.CurrentPageIndex;
        wp.PageSize = AspNetPager1.PageSize;//=PageSize;

        DataTable dt = wp.GetDataTableMyPage();
        GridView1.DataSource = dt;
        GridView1.DataBind();

        AspNetPager1.RecordCount = wp.RecordCount;
        AspNetPager1.CustomInfoHTML = " 共<b>" + wp.RecordCount.ToString() + "</b>条记录/";
        AspNetPager1.CustomInfoHTML += " <b>" + wp.PageCount.ToString() + "</b>页";
        AspNetPager1.CustomInfoHTML += " 当前第<font color=\"red\"><b>" + AspNetPager1.CurrentPageIndex.ToString() + "</b></font>页";
    }

    protected void AspNetPager1_PageChanged(object sender, EventArgs e)
    {
        BindGridViewData();
    }






    //字符串分页

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            bindData();
        }
    }

    protected void bindData()
    {
        int count = 0; //记录总数
        int pageSize = 10; //每页显示记录数
        int pageIndex = (Request["PageIndex"] == null) ? 1 : Convert.ToInt32(Request["PageIndex"]);
        DataSet ds = MSCL.PageHelper.PageList("TestTable", pageSize, pageIndex, "D_ID", true, "", out count);
        GridView1.DataSource = ds;
        GridView1.DataBind();

        ltPage.Text = MSCL.PageHelper.ToSplitPageHtml(count, pageSize, 5, 1, "", true);
    }
以上我们好像没有指定数据库连接字符串,大家如果看下DbHelper的代码,就知道要使用它必须在config中配置两个参数,如下:
    <appSettings>
        <add key="DbHelperProvider" value="System.Data.SqlClient"/>
        <add key="DbHelperConnectionString" value="Data Source=(local);Initial Catalog=DbHelperTest;Persist Security Info=True;User ID=sa;Password=sa"/>
    </appSettings>


 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FairHR.Util
{
    #region 数据表字段类
    /// <summary>
    /// 数据表字段类
    /// </summary>
    public class FieldTypeValue
    {
        /// <summary>
        /// 字段容器
        /// </summary>
        /// <param name="fieldName">字段名</param>
        /// <param name="fieldValue">字段值</param>
        /// <param name="isNum"></param>
        public FieldTypeValue(string fieldName, string fieldValue, bool isNum)
        {
            this.fieldName = fieldName;
            this.fieldValue = fieldValue;
            this.isNum = isNum;
        }

        /// <summary>
        /// 字段容器
        /// </summary>
        /// <param name="fieldName">字段名</param>
        /// <param name="fieldValue">字段值</param>
        public FieldTypeValue(string fieldName, string fieldValue)
        {
            this.fieldName = fieldName;
            this.fieldValue = fieldValue;
        }

        private string fieldName;
        /// <summary>
        /// 字段名
        /// </summary>
        public string FieldName
        {
            get { return fieldName; }
            set { fieldName = value; }
        }

        private bool isNum = false;
        /// <summary>
        /// 是否数字
        /// </summary>
        public bool IsNum
        {
            get { return isNum; }
            set { isNum = value; }
        }

        private string fieldValue;
        /// <summary>
        /// 字段值
        /// </summary>
        public string FieldValue
        {
            get { return fieldValue; }
            set { fieldValue = value; }
        }
    }
    #endregion

    #region SQL语句的构造类
    /// <summary>
    /// SQL语句的构造类
    /// </summary>
    public class BuilderSql
    {


        /// <summary>
        /// 构造新增Insert语句
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="ftvlist">list</param>
        /// <returns></returns>
        public static string createInsertSql(string tableName, List<FieldTypeValue> ftvlist)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(" insert into ");
            sb.Append(tableName);
            sb.Append("(");
            for (int i = 0; i < ftvlist.Count; i++)
            {
                FieldTypeValue ftv = (FieldTypeValue)ftvlist[i];
                if (i != ftvlist.Count - 1)
                {
                    sb.Append(ftv.FieldName + ",");
                }
                else
                {
                    sb.Append(ftv.FieldName);
                }
            }
            sb.Append(") values(");
            for (int i = 0; i < ftvlist.Count; i++)
            {
                FieldTypeValue ftv = (FieldTypeValue)ftvlist[i];
                if (ftv.IsNum)
                {
                    if (i != ftvlist.Count - 1)
                    {
                        sb.Append(ftv.FieldValue + ",");
                    }
                    else
                    {
                        sb.Append(ftv.FieldValue);
                    }
                }
                else
                {
                    if (i != ftvlist.Count - 1)
                    {
                        sb.Append("'" + ftv.FieldValue + "',");
                    }
                    else
                    {
                        sb.Append("'" + ftv.FieldValue + "'");
                    }
                }
            }
            sb.Append(")");
            return sb.ToString();
        }

        
        /// <summary>
        /// 构造更新Update语句
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="ftvlist">list</param>
        /// <param name="pkName">条件字段名</param>
        /// <param name="pkValue">条件字段值</param>
        /// <returns></returns>
        public static string createUpdateSql(string tableName, List<FieldTypeValue> ftvlist, string pkName, string pkValue)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(" update ");
            sb.Append(tableName);
            sb.Append(" set");
            for (int i = 0; i < ftvlist.Count; i++)
            {
                FieldTypeValue ftv = (FieldTypeValue)ftvlist[i];
                if (i != ftvlist.Count - 1)
                {
                    if (ftv.IsNum)
                    {
                        sb.Append(" " + ftv.FieldName + "=" + ftv.FieldValue + ",");
                    }
                    else
                    {
                        sb.Append(" " + ftv.FieldName + "='" + ftv.FieldValue + "',");
                    }
                }
                else
                {
                    if (ftv.IsNum)
                    {
                        sb.Append(" " + ftv.FieldName + "=" + ftv.FieldValue + "");
                    }
                    else
                    {
                        sb.Append(" " + ftv.FieldName + "='" + ftv.FieldValue + "'");
                    }
                }
            }
            sb.Append(" where " + pkName + "='" + pkValue + "'");
            return sb.ToString();
        }

        /// <summary>
        /// 构造删除Delete语句
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="pkName">条件字段名</param>
        /// <param name="pkValue">条件字段值</param>
        /// <returns></returns>
        public static string createDeleteSql(string tableName, string pkName, string pkValue)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(" delete from ");
            sb.Append(tableName);
            sb.Append(" where " + pkName + " = '" + pkValue + "'");
            return sb.ToString();
        }
    }
    #endregion
}


本文转载自:http://blog.csdn.net/smartsmile2012/article/details/7899215

深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
Java数据库简单增删查改通用类(二)

在后来的开发中,发现了以前的那个类还是有点不足之处,比如不好控制数据的commit方式(false/true),该类是将数据库连接对象传入到该增删查改通用类中,其优点在于提交方式可以在外面控制,...

王小费
2012/08/29
558
0
Android 的 ORM 框架--DBExecutor

DBExecutor主要的功能 使用了读写锁,支持多线程操作数据。 支持事务 支持ORM 缓存Sql,缓存表结构 这个类库主要用于android 数据库操作。 始终围绕着一个类对应一个表的概念。 只要创建一个...

lucky_jayce
2014/09/15
1K
1
lucky_jayce/DBExecutor

DBExecutor 主要的功能 1.使用了读写锁,支持多线程操作数据。 2.支持事务 3.支持ORM 4.缓存Sql,缓存表结构 这个类库主要用于android 数据库操作。 始终围绕着一个类对应一个表的概念。 只要...

lucky_jayce
2016/01/04
0
0
Asp.Net Core 2.0 项目实战(4)ADO.NET操作数据库封装、 EF Core操作及实例

Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Net Core 2.0 项目实战(3)NCMVC角色权限管理前...

郑州-在路上
2018/05/31
0
0
SQLite数据库创建时自定义路径

前言 在新建数据库sqlite的时候,我们已经知道了数据库默认路径为 那么,如果我们想在创建数据库时,自定义一个自己的路径该如何处理呢,需要涉及到三步 自定义Context,重写sqlite存储路径 ...

奔跑的佩恩
2017/11/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

教你玩转Linux—添加批量用户

添加和删除用户对每位Linux系统管理员都是轻而易举的事,比较棘手的是如果要添加几十个、上百个甚至上千个用户时,我们不太可能还使用useradd一个一个地添加,必然要找一种简便的创建大量用户...

xiangyunyan
30分钟前
6
0
返回提示信息,如:xxx创建成功!

【服务端】在输出的方法块中,加入要输出的字段(qcm_batch_id) QCMUserType.cs: public struct QCM_Custom_Create_Batch_Out_Tag { public BASCoreType.Cmn_Out_T......

_Somuns
30分钟前
6
0
Aliyun Serverless VSCode Extension v1.12.0 发布

Aliyun Serverless VSCode Extension 是阿里云 Serverless 产品 函数计算 Function Compute 的 VSCode 插件,该插件结合了函数计算 Fun 工具以及函数计算 SDK ,是一款 VSCode 图形化开发调试...

阿里云官方博客
31分钟前
6
0
程序员如何培养解决复杂问题的能力?

今天在上网时候,突然看到了这篇文章,感觉非常的适合现在的自己去思考下,可能也适用在座的读者。程序员不仅仅是敲代码,更是一个复合能力的结合体,也不仅仅停留在技术和代码阶段。你想要成...

哥本哈根的小哥
35分钟前
8
0
市场变化驱动产品思维升级

宜信科技中心财富管理产品部负责人Bob,与大家一起聊聊个性化推荐产品功能的设计和B端产品的功能策划方式。 拓展阅读:回归架构本质,重新理解微服务 智慧金融时代,大数据和AI如何为业务赋能...

宜信技术学院
35分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部