FCL 系列 - 2. FCL.Database.dll

基于 oledb 的数据库访问,可用于 Oracle、MS SqlServer、Access、Excel ... 的数据库访问。

    [DeveloperInfo("Wagwei")]
    public class DataCenterOp : IWagDataCenter
    {
        string _sConn = string.Empty;
        Dictionary<string, ConnAndTrans> _dicConnAndTrans;
        DBType _DBType = DBType.ACCESS;

        public DBType DatabaseType;
        public void Init(string conn, DBType dbType);

        public void TryToConnect();

        #region 构造(多态)

        public DataCenterOp()
        {
        }

        public DataCenterOp(string conn, DBType dbType);
        public void InitSqlServerOp(string dataSource, string password, string initialCatalog);
        public void InitSqlServerOp(string dataSource, string initialCatalog);
        public void InitAccessOp(string dataSource, string password);
        public void InitAccessOpNew(string dataSource, string password);
        public void InitText(string file);
        public void InitExcelOp(string dataSource, string pwd, string hdr, string imex);
        public void InitOracleOp(string userId, string dataSource, string pwd, string distibtx);
        #endregion

        #region 事务: 创建, 提交, 回滚, 获取

        public string CreateTran();
        public void CommitTran(string transGuid);
        public void RollbackTran(string transGuid);

        #endregion

        #region 执行sql语句

        public object ExecScalar(string sql, string transGuid = "");
        public object ExecScalar(SqlBuilder sqlB, string transGuid);
        public object ExecScalar(SqlBuilder[] arraySqlB, string transGuid);
        public int ExecNonQuery(string sql, string transGuid);
        public int ExecNonQuery(string sql);
        public int ExecNonQuery(SqlBuilder sqlB, string transGuid);
        public int ExecNonQuery(SqlBuilder sqlB);
        public int[] ExecNonQuery(SqlBuilder[] arraySqlB, string transGuid);
        #endregion

        #region 获取dt, ds

        public DataTable GetDt(string sql, string tableName, bool isSchema, string transGuid);
        public DataTable GetDt(SqlBuilder sqlB, bool isSchema, string transGuid);
        public DataSet GetDs(string sqls, string tableNames, bool isSchema, string transGuid);
        public DataSet GetDs(SqlBuilder[] arraySqlB, bool schema, string transGuid);
        #endregion

        #region 更新dt, ds

        public void UpdateTable(DataTable dt, string tableName, string keyFields, string updateFields, string transGuid);
        public void UpdateTableWithoutConflict(DataTable dt, string tableName, string keyFields, string updateFields, string transGuid);
        #endregion

        #region 更新数据(根据DataInfo)

        public void UpdateDataInfo(List<DataInfo> listDataInfo, string transGuid);

        #endregion

        #region 更新数据(插入, 删除, 更新), 根据FieldAndValue

        //插入
        public int InsertData(string tableName,
                                FieldAndValue[] keyFieldsAndValue,
                                FieldAndValue[] UpdateFieldsAndValue,
                                string transGuid);

        //删除
        public int DeleteData(string tableName,
                                FieldAndValue[] FieldsAndValues,
                                string transGuid);

        //更新
        public int UpdateData(string tableName,
                                FieldAndValue[] keyFieldsAndValue,
                                FieldAndValue[] UpdateFieldsAndValue,
                                string transGuid);

        #endregion

        #region 常用数据库操作

        public DataTable GetDmExecSessions(int type = 0);

        public void InitializeDatabase();

        public string GetGenCode(string id);

        #region 将T_Sys_Variables(var_key, var_value, remark)表作为配置信息存储媒介

        public string CfgGetValue(string key);
        public bool CfgSetValue(string key, string value);

        #endregion

        #endregion

    }//end class

简单示例代码:

DataCenterOp mDCO = new DataCenterOp();
DataTable mdt;

mDCO.InitSqlServerOp(@"JOHN-PC\DAVID", "DB_WagTest");
mDCO.InitSqlServerOp(@"JOHN-PC\DAVID", "1122", "DB_WagTest");

//使用sql语句查询
this.mdt = mDCO.GetDt("select * from t_products", "", false, "");

//直接将 DataTable 数据更新到数据库(根据行的状态、Cell 的状态)
mDCO.UpdateTable(mdt, "t_products", "*pid", "", "");
mdt.AcceptChanges();

//插入数据
SqlBuilder sb = new SqlBuilder("insert into t_log(filename) values(?)");
//sb = new SqlBuilder("insert into t_log(filename) values(?)", "值");
sb.AppendParams(DateTime.Now.ToString("yyyyMMddHHmmssffff"));
mDCO.ExecNonQuery(sb);

//更多示例代码将在后期贴上...

时间: 2024-12-29 06:48:05

FCL 系列 - 2. FCL.Database.dll的相关文章

FCL 系列 - 1. FCL.Core.dll

FCL 相关组件已经经历好几年了,已应用于很多各式各样的项目开发中,本系列文章将讲解 FCL 各个组件的功能及使用说明. 此 dll 作为其他程序集的核心部分,主要用于授权的验证.

FCL 系列 - 4. FCL.Net.dll

使用.NET 的 Socket 对象,Select 模型. 自定义封包: 包长度+消息体 客户端-服务端架构,有心跳包机制. 客户端源代码: using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; using System.Threading; using System.Windows.Forms; using Wagwei.FCL

FCL 系列 - 5. FCL.Log.dll

日志组件: 1 public static WagTxtLog mTxtLog; 2 mTxtLog = WagTxtLog.Create("Log"); 3 mTxtLog.Level = (WagLogLevel)255; 日志事例: #---------------- FCL.Log ----------------#Software: iisexpress#ProcessID: 6628#AppDomain: /LM/W3SVC/23/ROOT-4-13066382247438

FCL 系列 - 3. FCL.Forms.dll

通用窗体,自定义用户控件等. 困了,后续发布其他组件...

PC高级语言与施耐德、罗克韦尔、台达等PLC的Modbus通讯源代码(ModbusTCP.DLL/ModbusRTU.DLL)

1.0  通讯组件概述 该类通讯组件适用于基于PC高级语言的工业自动化控制系统,用于PC与可编程控制器(PLC).智能仪表等进行数据通讯.组件采用动态链接库文件(*.DLL)的形式,在PC系统的项目工程里引用该组件,调用相应的属性与方法函数,即可快速实现PC与PLC的数据高效交换. DLL通讯组件无须安装,直接复制到工程文件目录,方便打包安装部署:无须任何配置,直接调用函数,与应用开发无缝衔接:多年工程经验的软件团队开发测试,经过本公司及客户的海量实际应用检验,稳定可靠:采用稳定高效的内部协议,

第一章、 CLR的执行模型

1. 概述 本章主要是介绍从源代码到可执行程序的过程中,CLR所做的工作. 2. 名词解释 ① 公共语言运行时(Common Language Runtime, CLR),是一个可由多种语言使用的 运行时,核心功能(内存管理.程序集加载.安全性.异常处理和线程同步)可由面向CLR的所有语言使用. ② PE32:32位 Microsoft Windows 可移植执行体.    PE32+:64位 Microsoft Windows 可移植执行体. ③ 元数据 是一组数据表,这些数据表描述了 模块中

使用 C# 开发智能手机软件:推箱子(十三)

这是"使用 C# 开发智能手机软件:推箱子"系列文章的第十三篇.在这篇文章中,介绍 Window/TopicDlg.cs 源程序文件.这个源程序文件包含 TopicDlg 类,该类继承自 System.Windows.Forms.Form 类,表示推箱子的"帮助"对话框.如下图所示: 下面是 Window/TopicDlg.Designer.cs 源程序的部分代码: namespace Skyiv.Ben.PushBox.Window { partial class

.NET框架认识

回忆过去,VC++生成的文件,经过预编译.编译.汇编.链接几个步骤之后,生成可执行的本地代码. 1.C#源程序执行过程 源程序编译为程序集的过程:C#源程序 -> C#编译器 -> 程序集(CIL代码)-> JIT二次编译(.NET Runtime环境支持)-> 本机可以识别的指令 上面的CIL(Common Intermediate Language)不是本机可以直接执行的指令,需要后续的处理.CIL是一种基于堆栈的语言,也是一种面向对象的语言. 2.BCL基类库 BCL(Bas

访问svc 文件,编译器错误消息: CS0016,未能写入输出文件

编译错误              说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码.             编译器错误消息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\ncs.qms.apphost.branch\930ee5f1\66b34343\App_global.asax.dorw-abx.dll”