只需要写存储过程,其他的事情都交给Ng.Net--(4)

2023-10-18 14:59

本文主要是介绍只需要写存储过程,其他的事情都交给Ng.Net--(4),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

只需要写存储过程,其他的事情都交给Ng.Net--Ng.Net生成物操作数据库

一、预备知识

1)NgBook有三张表 Admin,Books,Replays(数据库结构见:http://www.cnblogs.com/adgjcn/archive/2009/04/25/1443408.html)
通过Ng.Net代码生成器(解决方案生成工具)生成后的生成物中实体层如下:

NgBook.Entities.Admin  管理员实体类

NgBook.Entities.Book  留言实体类

NgBook.Entites.Replay 留言回复实体类

NgBook项目下载地址:http://ngbook.ngadget.net

二、演示Ng.Net生成物如何操作数据库

1)往数据库中 Admins 表插入一条记录[非事务],通过对象操作,实例代码以及执行结果如下:

NgBook.Entities.Admin admin  =   new  NgBook.Entities.Admin();
admin.ThemForld 
=   " 0 " ;
admin.UserName 
=   " ngadmin " ;
admin.UserPassword 
=  NGadget.Common.Security.MD5.EnMD5( " admin " );

try
ExpandedBlockStart.gifContractedBlock.gif
{
  admin.ID 
= Convert.ToInt32(adminProcess.Insert(admin));
}

catch  (Exception ex)
ExpandedBlockStart.gifContractedBlock.gif
{
  
//记录日志
  admin.ID = 0;//表示插入失败
  tm.SetValue("operMess1""插入失败"+ex.Message);
  NGadget.Common.Log.ApplicationLog.WriteLine(ex.Message);
}

if  (admin.ID  >   0 // 插入成功
ExpandedBlockStart.gifContractedBlock.gif
{
  tm.SetValue(
"operMess1""插入成功=新产生的Id是="+admin.ID.ToString());
}

 

2)往数据库中 Admins 表插入一条记录[非事务],不通过对象操作,实例代码以及执行结果如下:

NgBook.Entities.Admin admin  =   new  NgBook.Entities.Admin();
// 操作返回值
int  insertedKeyID  =   0 ;
try
ExpandedBlockStart.gifContractedBlock.gif
{
  insertedKeyID 
= Convert.ToInt32(adminProcess.Insert("ngadmin",NGadget.Common.Security.MD5.EnMD5("admin"),"0"));
}

catch  (Exception ex)
ExpandedBlockStart.gifContractedBlock.gif
{
  
//记录日志
  NGadget.Common.Log.ApplicationLog.WriteLine(ex.Message);
  tm.SetValue(
"operMess2""插入失败" + ex.Message);
}


if  (insertedKeyID  >   0 // 插入成功
ExpandedBlockStart.gifContractedBlock.gif
{
  tm.SetValue(
"operMess2""插入成功=新产生的Id是=" + insertedKeyID.ToString());
}
3) 演示跨方法事务处理
// =================== 提交事务 ================
using  (NGadget.Transaction.LocalTransaction lt  =   new  NGadget.Transaction.LocalTransaction( " ngbook " ))
ExpandedBlockStart.gifContractedBlock.gif
{
  
try
ExpandedSubBlockStart.gifContractedSubBlock.gif  
{
    
//向 Admins 表插入数据
    adminProcess.Insert(lt, "admin", NGadget.Common.Security.MD5.EnMD5("admin"), "0");
    
//向 Books 表中插入数据
    bookProcess.Insert(lt, "gg""12121212""122121""221121""121212""121221","ddd", System.DateTime.Now, 1false);
    
//提交事务
    lt.Commit();
  }

  
catch(Exception ex)
ExpandedSubBlockStart.gifContractedSubBlock.gif  
{
    
//回滚事务
    lt.Rollback();
    NGadget.Common.Log.ApplicationLog.WriteLine(ex.Message);
  }

  
finally 
ExpandedSubBlockStart.gifContractedSubBlock.gif  
{
    
//销毁事务
    lt.Dispose();
  }

}

//
=================== 不提交事务 ================
using  (NGadget.Transaction.LocalTransaction lt  =   new  NGadget.Transaction.LocalTransaction( " ngbook " ))
ExpandedBlockStart.gifContractedBlock.gif
{
  
try
ExpandedSubBlockStart.gifContractedSubBlock.gif  
{
    
//向 Admins 表插入数据
    adminProcess.Insert(lt, "admin", NGadget.Common.Security.MD5.EnMD5("admin"), "0");
    
//向 Books 表中插入数据
    bookProcess.Insert(lt, "gg""12121212""122121""221121""121212""121221","ddd", System.DateTime.Now, 1false);
    
throw new Exception("添加了一个错误");
    
//提交事务
    lt.Commit();
  }

  
catch(Exception ex)
ExpandedSubBlockStart.gifContractedSubBlock.gif  
{
    
//回滚事务
    lt.Rollback();
    NGadget.Common.Log.ApplicationLog.WriteLine(ex.Message);
  }

  
finally 
ExpandedSubBlockStart.gifContractedSubBlock.gif  
{
    
//销毁事务
    lt.Dispose();
  }

}

三、实体类操作数据库扩展
          1. 实体.GetListsByProcName(...) ;//通过存储过程到实体对应表获取多条记录,不可扩展属性.事务方法(非)

          2. 实体.GetListsByProcNameExAttr(...) ;//通过存储过程到实体对应表获取多条记录,可扩展属性.事务方法(非)

          3. 实体.GetOneObjectByProcName(...);//通过存储过程到实体对应数据库表中获取一条记录,不可扩展属性.事务方法(非)
          
          4. 实体.GetOneObjectByProcNameExAttr(...);//通过存储过程到实体对应数据库表中获取一条记录,可扩展属性.事务方法(非)

          5. 实体.ExecuteProcScalar(...);//执行存储过程返回一行一列的结果集,事务方法(非)

          6. 实体.ExecuteProcNonQuery(...);//执行存储过程不返回任何值,事务方法(非)

          7. 实体.GetListsBySqlText(...);//可通过sql语句,带参数的sql语句,存储过程3种方式到实体类对应的数据表中获取多条记录,不可扩展属性.事务方法(非)

          8. 实体.GetListsBySqlTextExAttr(...);//可通过sql语句,带参数的sql语句,存储过程3种方式到实体类对应的数据表中获取多条记录,可扩展属性.事务方法(非)
          9. 实体.GetOneObjectBySqlText(...);//可通过sql语句,带参数的sql语句,存储过程3种方式到实体类对应的数据表中获取一条记录,不可扩展属性.事务方法(非)
        10. 实体.GetOneObjectBySqlTextExAttr(...);//可通过sql语句,带参数的sql语句,存储过程3种方式到实体类对应的数据表中获取一条记录,可扩展属性.事务方法(非)
        11. 实体.ExecuteSqlTextScalar(...);//可通过sql语句,带参数的sql语句,存储过程3种方式执行sql语句返回一行一列的结果集,事务方法(非)

        12. 实体.ExecuteProcNonQuery(...);//可通过sql语句,带参数的sql语句,存储过程3种方式执行sql语句不返回任何结果集,事务方法(非)
        
        真正达到用户只需要编写成出过程的目的。

        详细操作请见NgBook项目中Example.aspx、PostBook.aspx、Index.aspx

 Ng.Net解决方案生成工具(C#代码生成器)已经有715人下载,在此感谢各位的使用,有您们的使用我想Ng.Net解决方案生成工具会越来越完善,谢谢^_^
----------------------------------------------

NgBook下载地址:http://ngbook.ngadget.net/ 

Ng.Net官方网站:http://www.ngadget.net/


转载于:https://www.cnblogs.com/adgjcn/archive/2009/05/07/1452298.html

这篇关于只需要写存储过程,其他的事情都交给Ng.Net--(4)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/233308

相关文章

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.

Java实现数据库图片上传与存储功能

《Java实现数据库图片上传与存储功能》在现代的Web开发中,上传图片并将其存储在数据库中是常见的需求之一,本文将介绍如何通过Java实现图片上传,存储到数据库的完整过程,希望对大家有所帮助... 目录1. 项目结构2. 数据库表设计3. 实现图片上传功能3.1 文件上传控制器3.2 图片上传服务4. 实现

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

C语言中的浮点数存储详解

《C语言中的浮点数存储详解》:本文主要介绍C语言中的浮点数存储详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、首先明确一个概念2、接下来,讲解C语言中浮点型数存储的规则2.1、可以将上述公式分为两部分来看2.2、问:十进制小数0.5该如何存储?2.3 浮点

Spring Security注解方式权限控制过程

《SpringSecurity注解方式权限控制过程》:本文主要介绍SpringSecurity注解方式权限控制过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、摘要二、实现步骤2.1 在配置类中添加权限注解的支持2.2 创建Controller类2.3 Us