只需要写存储过程,其他的事情都交给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

相关文章

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

SpringBoot 整合 Grizzly的过程

《SpringBoot整合Grizzly的过程》Grizzly是一个高性能的、异步的、非阻塞的HTTP服务器框架,它可以与SpringBoot一起提供比传统的Tomcat或Jet... 目录为什么选择 Grizzly?Spring Boot + Grizzly 整合的优势添加依赖自定义 Grizzly 作为

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

springboot整合gateway的详细过程

《springboot整合gateway的详细过程》本文介绍了如何配置和使用SpringCloudGateway构建一个API网关,通过实例代码介绍了springboot整合gateway的过程,需要... 目录1. 添加依赖2. 配置网关路由3. 启用Eureka客户端(可选)4. 创建主应用类5. 自定

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

使用JavaScript操作本地存储

《使用JavaScript操作本地存储》这篇文章主要为大家详细介绍了JavaScript中操作本地存储的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录本地存储:localStorage 和 sessionStorage基本使用方法1. localStorage

SpringBoot集成SOL链的详细过程

《SpringBoot集成SOL链的详细过程》Solanaj是一个用于与Solana区块链交互的Java库,它为Java开发者提供了一套功能丰富的API,使得在Java环境中可以轻松构建与Solana... 目录一、什么是solanaj?二、Pom依赖三、主要类3.1 RpcClient3.2 Public

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

SpringBoot整合kaptcha验证码过程(复制粘贴即可用)

《SpringBoot整合kaptcha验证码过程(复制粘贴即可用)》本文介绍了如何在SpringBoot项目中整合Kaptcha验证码实现,通过配置和编写相应的Controller、工具类以及前端页... 目录SpringBoot整合kaptcha验证码程序目录参考有两种方式在springboot中使用k

SpringBoot整合InfluxDB的详细过程

《SpringBoot整合InfluxDB的详细过程》InfluxDB是一个开源的时间序列数据库,由Go语言编写,适用于存储和查询按时间顺序产生的数据,它具有高效的数据存储和查询机制,支持高并发写入和... 目录一、简单介绍InfluxDB是什么?1、主要特点2、应用场景二、使用步骤1、集成原生的Influ