原创Winform快速开发框架平台Oracle版本(三层架构+C#.NET+Oracle数据库)
C/S架构 Winform快速开发框架平台Oracle版本V5.0
适用开发:制造、服务、零售、商贸等行业的ERP、MRP、MES、CRM、MIS、HIS、POS数据管理应用系统
运行平台:Windows + .NET Framework 4.5
开发工具:Visual Studio 2015+,C#语言
数据库:Microsoft SQLServer 2008R2+(支持多数据库:Oracle/MySql)
产品介绍 C/S系统开发框架旗舰版为软件团队提供强大的技术支撑以及快速开发能力,开发框架集成大量的通用开发包与工具实用类,提供丰富的例子,借助技术文档、网站资源、演示源码以及在线技术指导,用户能快速投入研发自己的项目。自2007年首发开发框架以来,我们成功积累了2000多位用户,其中包括数百家软件公司或大型集团企业。经过十年的产品迭代升级,最新旗舰版技术更成熟,性能更稳定,产出效率更高!
配套的代码生成器工具能自动生成界面(FORM)、业务层(BLL)、数据层(DAL)、模型(Model)、报表(Report)以及业务模块(Class Library DLL)的源代码,极大地提高开发效率、节约开发时间、降低项目成本。据多年项目实践统计,开发框架基本能完成项目大概60%以上的工作量。
C/S系统快速开发框架旗舰版V5.0(Ultimate Edition)

Oracle版C/S系统快速开发框架旗舰版V5.0源码目录说明:
1. 软件授权注册系统Oracle版本数据库:CSFramework.Authorization.Oracle.db
2. 软件授权注册系统Oracle版本源码:CSFramework.Authorization-Source-Oracle
3. C/S 系统版本自动升级软件V1.0 Oracle版本源码:CSFrameworkV5.AutoUpgrader
4. 客户端主程序演示版源码:CSFrameworkV5.ClientDemo
5. 客户端主程序开发架构源码:CSFrameworkV5.ClientFoundation
6. C/S框架代码生成器Oracle版本源码:CSFrameworkV5.CodeGenerator
7. C/S框架核心类库:CSFrameworkV5.Core
8. 服务端源码:CSFrameworkV5.Server
9. 数据库连接工具Oracle版本:CSFrameworkV5.SqlConnector
导出Oracle数据库:
SQL Code:
--导出系统数据库
expdp YG01/test@orcl directory=DATA_PUMP_DIR dumpfile=YG01_20190627.DMP logfile=YG01.log schemas=YG01
--导出业务数据库
expdp YG02/test@orcl directory=DATA_PUMP_DIR dumpfile=YG02_20190627.DMP logfile=YG02.log schemas=YG02
expdp YG01/test@orcl directory=DATA_PUMP_DIR dumpfile=YG01_20190627.DMP logfile=YG01.log schemas=YG01
--导出业务数据库
expdp YG02/test@orcl directory=DATA_PUMP_DIR dumpfile=YG02_20190627.DMP logfile=YG02.log schemas=YG02
用户:YG02,密码:test,对应业务数据库。


Oracle数据库备份文件:

Winform C/S架构快速开发框架Oracle版本与SQL版本区别:
1. 数据库差异巨大,SQL语法,存储过程、视图、函数、数据类型等。
2. 字段名称大小写问题,.NET区分大小写,数据编辑组件绑定字段问题,比如GridColumn.FieldName。
3. 基于ADO.NET数据访问层改动,存储过程调用方式。
4. DbCommand参数差异,Oracle是":",SqlServer是"@"
5. 返回数据必须定义Cursor参数:REF CURSOR类型。
6. 获取服务器时间函数、GUID函数、触发器等有所不同。
7. 处理自增字段。Oracle没有自增字段类型(SqlServer是IDENTITY),因此需要使用触发器维护自增字段。
8. Oracle内部权限机制控制用户数据查询,sp_SetContext存储过程。
Oracle存储过程参考:
SQL Code:
CREATE OR REPLACE PROCEDURE sp_QueryOutstandingAP(
v_InvoiceNo VARCHAR2, --发票编号,用于查询单张发票的Outstanding
v_SupplierCode VARCHAR2,--客户编号
v_FromDate VARCHAR2, --起始日期:YYYYMMDD
v_ToDate VARCHAR2, --结束日期1:YYYYMMDD
v_EndDate VARCHAR2, --结束日期2:YYYYMMDD
Pkg_Return1 Out Pkg_Retern.Pkg_Return
)
AS
BEGIN
--sql代码段,省略。。。。
END;
//来源:C/S框架网(www.csframework.com) QQ:23404761
v_InvoiceNo VARCHAR2, --发票编号,用于查询单张发票的Outstanding
v_SupplierCode VARCHAR2,--客户编号
v_FromDate VARCHAR2, --起始日期:YYYYMMDD
v_ToDate VARCHAR2, --结束日期1:YYYYMMDD
v_EndDate VARCHAR2, --结束日期2:YYYYMMDD
Pkg_Return1 Out Pkg_Retern.Pkg_Return
)
AS
BEGIN
--sql代码段,省略。。。。
END;
//来源:C/S框架网(www.csframework.com) QQ:23404761
注意:若要返回多张表,需要定义多个Pkg_Return参数,如:Pkg_Return1, Pkg_Return2等等...
Oracle存储过程返回资料表的Pkg_Retern.Pkg_Return包(package)类型定义:
SQL Code:
create or replace package PKG_RETERN is
TYPE tb_MyUser IS REF CURSOR;
TYPE pkg_return IS REF CURSOR;
TYPE pkg_return1 IS REF CURSOR;
TYPE pkg_return2 IS REF CURSOR;
TYPE pkg_return3 IS REF CURSOR;
end PKG_RETERN;
//来源:C/S框架网(www.csframework.com) QQ:23404761
TYPE tb_MyUser IS REF CURSOR;
TYPE pkg_return IS REF CURSOR;
TYPE pkg_return1 IS REF CURSOR;
TYPE pkg_return2 IS REF CURSOR;
TYPE pkg_return3 IS REF CURSOR;
end PKG_RETERN;
//来源:C/S框架网(www.csframework.com) QQ:23404761
Oracle版本数据访问层调用存储过程实例:
C# Code:
/// <summary>
/// 按条件从申购单主表获取数据
/// </summary>
public System.Data.DataTable Query(QueryBusinessBase P)
{
CommandHelper sp = _Database.CreateSqlProc("usp_IO_Search");
sp.AddParam("v_DocNoFrom", DbType.String, P.DocNoFrom);
sp.AddParam("v_DocNoTo", DbType.String, P.DocNoTo);
sp.AddParam("v_DocDateFrom", DbType.DateTime, ConvertEx.ToSqlDateTime(P.DocDateFrom));
sp.AddParam("v_DocDateTo", DbType.DateTime, ConvertEx.ToSqlDateTime(P.DocDateTo));
if (Globals._IsOracle) sp.AddParamOracleCursor("Pkg_Return1");
return _Database.GetTable( sp.Command, tb_IO.__TableName);
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
/// 按条件从申购单主表获取数据
/// </summary>
public System.Data.DataTable Query(QueryBusinessBase P)
{
CommandHelper sp = _Database.CreateSqlProc("usp_IO_Search");
sp.AddParam("v_DocNoFrom", DbType.String, P.DocNoFrom);
sp.AddParam("v_DocNoTo", DbType.String, P.DocNoTo);
sp.AddParam("v_DocDateFrom", DbType.DateTime, ConvertEx.ToSqlDateTime(P.DocDateFrom));
sp.AddParam("v_DocDateTo", DbType.DateTime, ConvertEx.ToSqlDateTime(P.DocDateTo));
if (Globals._IsOracle) sp.AddParamOracleCursor("Pkg_Return1");
return _Database.GetTable( sp.Command, tb_IO.__TableName);
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
CSFramework.DB组件OracleDatabase类的SetContext方法:
C# Code:
/// <summary>
/// Oracle内部权限机制控制用户数据查询
/// </summary>
/// <param name="connection"></param>
/// <returns></returns>
public int SetContext(OracleConnection connection)
{
try
{
OracleCommand cmd = new OracleCommand("sp_SetContext");
cmd.Connection = connection;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("In_Userid", DatabaseOracle.CurrentUserID);
int iValue = cmd.ExecuteNonQuery();
return iValue;
}
catch (System.Exception ex)
{
throw ex;
}
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
/// Oracle内部权限机制控制用户数据查询
/// </summary>
/// <param name="connection"></param>
/// <returns></returns>
public int SetContext(OracleConnection connection)
{
try
{
OracleCommand cmd = new OracleCommand("sp_SetContext");
cmd.Connection = connection;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("In_Userid", DatabaseOracle.CurrentUserID);
int iValue = cmd.ExecuteNonQuery();
return iValue;
}
catch (System.Exception ex)
{
throw ex;
}
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
Oracle sp_SetContext存储过程:
SQL Code:
CREATE OR REPLACE PROCEDURE sp_SetContext(In_Userid VARCHAR2)
IS
v_UserID VARCHAR2(20);
v_IsRoot VARCHAR2(10);
v_schema varchar2(50);
begin
select SYS_CONTEXT('USERENV', 'SESSION_USER') into v_schema from dual;
if v_schema = 'DBUSRSYS' then
return;
end if;
pkg_Context.Set_Context('UserID', Nvl(In_Userid,'99999'));
pkg_Context.Set_Context('ISALL',v_IsRoot);
END sp_SetContext;
//来源:C/S框架网(www.csframework.com) QQ:23404761
IS
v_UserID VARCHAR2(20);
v_IsRoot VARCHAR2(10);
v_schema varchar2(50);
begin
select SYS_CONTEXT('USERENV', 'SESSION_USER') into v_schema from dual;
if v_schema = 'DBUSRSYS' then
return;
end if;
pkg_Context.Set_Context('UserID', Nvl(In_Userid,'99999'));
pkg_Context.Set_Context('ISALL',v_IsRoot);
END sp_SetContext;
//来源:C/S框架网(www.csframework.com) QQ:23404761
PACKAGE YG01.pkg_CONTEXT:
SQL Code:
CREATE OR REPLACE PACKAGE YG01.pkg_CONTEXT IS
--建立Context […]
--Create OR REPLACE context ERP_CONTEXT using PKG_CONTEXT ;-- ACCESSED GLOBALLY
--查询Context
--SELECT Sys_Context('ERP_CONTEXT','TYPE') FROM DUAL;
PROCEDURE Set_Context(In_Conditionid IN VARCHAR2, In_Conditionvalue IN VARCHAR2);
END;
//来源:C/S框架网(www.csframework.com) QQ:23404761
--建立Context […]
--Create OR REPLACE context ERP_CONTEXT using PKG_CONTEXT ;-- ACCESSED GLOBALLY
--查询Context
--SELECT Sys_Context('ERP_CONTEXT','TYPE') FROM DUAL;
PROCEDURE Set_Context(In_Conditionid IN VARCHAR2, In_Conditionvalue IN VARCHAR2);
END;
//来源:C/S框架网(www.csframework.com) QQ:23404761
创建OracleConnection调用SetContext:
C# Code:
DbConnection connection = null;
try
{
if (cmd.Connection == null)
{
cmd.Connection = CreateConnection();
SetContext(cmd.Connection as OracleConnection);
}
return cmd.ExecuteReader();
}
finally
{
Close(connection);
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
try
{
if (cmd.Connection == null)
{
cmd.Connection = CreateConnection();
SetContext(cmd.Connection as OracleConnection);
}
return cmd.ExecuteReader();
}
finally
{
Close(connection);
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
上面部分代码来自CSFramework.DB组件。


:


参考文档:
原创C/S架构开源软件 - C#.NET+Winform+Dev+SQL快速开发框架
Winform C/S架构快速开发框架Oracle版本与MsSQL版本区别
基于集团组织架构数据权限系统快速开发框架(C#.NET Winform+支持多数据库)
C#.NET Winform轻量级UI框架软件快速开发平台(MySQL, Oracle, MsSQL)
C/S软件授权注册系统V3.0(Winform+WebApi+.NET8+EFCore版本)|C/S开发框架
C# C/S架构软件自动升级程序Winform+多数据库(MySQL,MsSQL,Oracle)-C/S开发框架
数据库信息管理开发平台 - C/S结构+Winform+ADO.NET快速开发框架
C# C/S架构软件自动升级程序Winform+多数据库(MySQL,MsSQL,Oracle)
Winform界面自适应快速开发框架(C#+Dev+三层架构+多数据库支持)
CSFramework.DB基于ADO.NET多数据库底层组件包(MSSQL+Oracle+MySQL)
C#.Net局域网版本自动升级解决方案(原创)
Winform三层架构+WebService+权限管理系统软件开发平台(C#.NET开发)
Winform三层架构软件开发平台(C#.NET开发)
C#.NET开发软件Winform三层架构代码生成器软件
EFCore+.NET8:使用Oracle数据库提交大图片文件需要指定BLOB类型|C/S开发框架
C#.NET快速开发平台(Winform C/S架构最新版本)
原创C/S架构开源软件 - C#.NET+Winform+Dev+SQL快速开发框架
Winform C/S架构快速开发框架Oracle版本与MsSQL版本区别
基于集团组织架构数据权限系统快速开发框架(C#.NET Winform+支持多数据库)
C#.NET Winform轻量级UI框架软件快速开发平台(MySQL, Oracle, MsSQL)
C/S软件授权注册系统V3.0(Winform+WebApi+.NET8+EFCore版本)|C/S开发框架
C# C/S架构软件自动升级程序Winform+多数据库(MySQL,MsSQL,Oracle)-C/S开发框架
数据库信息管理开发平台 - C/S结构+Winform+ADO.NET快速开发框架
C# C/S架构软件自动升级程序Winform+多数据库(MySQL,MsSQL,Oracle)
Winform界面自适应快速开发框架(C#+Dev+三层架构+多数据库支持)
CSFramework.DB基于ADO.NET多数据库底层组件包(MSSQL+Oracle+MySQL)
C#.Net局域网版本自动升级解决方案(原创)
Winform三层架构+WebService+权限管理系统软件开发平台(C#.NET开发)
Winform三层架构软件开发平台(C#.NET开发)
C#.NET开发软件Winform三层架构代码生成器软件
EFCore+.NET8:使用Oracle数据库提交大图片文件需要指定BLOB类型|C/S开发框架
C#.NET快速开发平台(Winform C/S架构最新版本)
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服


