diff --git a/插件库/Lskj.Core/DBConfig.cs b/插件库/Lskj.Core/DBConfig.cs
index 2d8482e..0b8ca64 100644
--- a/插件库/Lskj.Core/DBConfig.cs
+++ b/插件库/Lskj.Core/DBConfig.cs
@@ -20,6 +20,7 @@ using System.Net.Sockets;
using System.Threading;
using System.Diagnostics;
using System.IO;
+using System.Data.Common;
namespace Lskj.Core
{
@@ -178,7 +179,7 @@ namespace Lskj.Core
DataBase = subKey.GetValue("datastr", "") + "";
ServerName = subKey.GetValue("ServerName", "") + "";
InternalNetworkAddress = subKey.GetValue("InternalNetworkAddress", "") + "";
- ExternalNetworkAddress= subKey.GetValue("ExternalNetworkAddress", "") + "";
+ ExternalNetworkAddress = subKey.GetValue("ExternalNetworkAddress", "") + "";
IsInternalNetwork = (subKey.GetValue("IsInternalNetwork", "") + "").Equals("1");
LoginName = subKey.GetValue("LoginName", "") + "";
@@ -383,37 +384,27 @@ namespace Lskj.Core
/// 版本:1.0
///
/// true if XXXX, false otherwise.
- public bool CreateConnection(string Connection = "")
+ public bool CreateConnection(string Connection = "", ConnectionType connectionType = ConnectionType.SqlServer)
{
-
- string connStr = GetConnection(Connection);
- if (SqlHelper._connection != null)
- {
- try
- {
- SqlHelper._connection.Close();
- SqlHelper._connection.Dispose();
- }
- catch (Exception)
- {
- }
- SqlHelper._connection = null;
- }
+ bool isConnect = false;
try
{
- SqlHelper._connection = new SqlConnection(connStr);
- SqlHelper._connection.Open();
-
- return true;
- }
- catch (Exception ex)
- {
- LogHelper.Instance.WriteLog(ex.Message);
- }
- return false;
- }
-
-
-
- }
-}
+ string connStr = GetConnection(Connection);
+ //connectionType = ConnectionType.KdbnServer;
+ //connStr = "host=192.168.0.55;port=54321;database=test3;username=lserpAdmin;password=lserp110;";
+ //connectionType = ConnectionType.DmServer;
+ //connStr = "Server=192.168.0.55:5236; schema=DBO; UserId=LSERPADMIN; PWD=Lserp110";
+ string providerName = "System.Data.SqlClient";
+ SqlHelper.ConnectionType = ConnectionType.SqlServer;
+ if (connectionType == ConnectionType.KdbnServer)
+ {
+ providerName = "Kdbndp";
+ SqlHelper.ConnectionType = ConnectionType.KdbnServer;
+ }
+ else if (connectionType == ConnectionType.DmServer)
+ {
+ providerName = "Dm";
+ SqlHelper.ConnectionType = ConnectionType.DmServer;
+ }
+ SqlHelper.dbFactory = DbProviderFactories.GetFactory(providerName);
+
\ No newline at end of file
diff --git a/插件库/Lskj.Core/SqlHelper.cs b/插件库/Lskj.Core/SqlHelper.cs
index 6baa3fd..ea11cdf 100644
--- a/插件库/Lskj.Core/SqlHelper.cs
+++ b/插件库/Lskj.Core/SqlHelper.cs
@@ -1,58 +1,77 @@
-/******************************
-* 说明:数据库操作类
-* 创建人:龚宇超
-* 创建日期:2017-07-24
-* 修改人:
-* 修改日期:
-* 修改备注:
-* 版本:1.0.0.0
-******************************/
+using Kdbndp;
+using KdbndpTypes;
using System;
-using System.Collections.Generic;
+using System.Data;
+using System.Data.Common;
+using System.Data.SqlClient;
using System.Linq;
using System.Text;
-using System.Data.SqlClient;
-using System.Data;
-
namespace Lskj.Core
{
///
- /// 数据库操作类
+ /// 数据库连接类型
///
+ public enum ConnectionType
+ {
+ SqlServer = 0,
+ KdbnServer = 1,
+ DmServer = 2
+ }
public static class SqlHelper
{
+ ///
+ /// 连接类型
+ ///
+ private static ConnectionType connectionType = ConnectionType.SqlServer;
+ public static ConnectionType ConnectionType
+ {
+ get { return connectionType; }
+ set { connectionType = value; }
+ }
+ ///
+ /// 数据连接工厂
+ ///
+ public static DbProviderFactory dbFactory;
///
/// 数据连接
///
- public static SqlConnection _connection;
+ public static DbConnection _connection;
///
/// 请求超时时间
///
public static int CommandTimeout;
+ ///
+ /// 说明:是否已经连接数据库
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2024-3-5
+ /// 功能关联:公版方法
+ ///
+ ///
+ public static bool IsConnect()
+ {
+ bool isConnect = _connection.State == ConnectionState.Open;
+ return isConnect;
+ }
#region ExecuteAdapter
-
///
/// 说明:获取适配器
- /// 创建人:龚宇超
- /// 创建日期:2017-07-24
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
/// Type of the command.
/// The command text.
/// The command parameters.
/// SqlDataAdapter.
- public static SqlDataAdapter ExecuteAdapter(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
+ public static DbDataAdapter ExecuteAdapter(CommandType cmdType, string cmdText, params DbParameter[] commandParameters)
{
- SqlDataAdapter adapter;
- SqlCommand cmd = new SqlCommand();
+ DbDataAdapter adapter = dbFactory.CreateDataAdapter();
+ DbCommand cmd = dbFactory.CreateCommand();
try
{
PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters);
- adapter = new SqlDataAdapter(cmd);
+ adapter.SelectCommand = cmd;
}
catch
{
@@ -60,28 +79,23 @@ namespace Lskj.Core
}
return adapter;
}
-
-
///
/// 说明:获取适配器
- /// 创建人:龚宇超
- /// 创建日期:2017-07-24
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
/// Type of the command.
/// The command text.
/// SqlDataAdapter.
- public static SqlDataAdapter ExecuteAdapter(CommandType cmdType, string cmdText)
+ public static DbDataAdapter ExecuteAdapter(CommandType cmdType, string cmdText)
{
- SqlDataAdapter adapter;
- SqlCommand cmd = new SqlCommand();
+ DbDataAdapter adapter = dbFactory.CreateDataAdapter();
+ DbCommand cmd = dbFactory.CreateCommand();
try
{
PrepareCommand(cmd, _connection, null, cmdType, cmdText, null);
- adapter = new SqlDataAdapter(cmd);
+ adapter.SelectCommand = cmd;
}
catch
{
@@ -90,16 +104,12 @@ namespace Lskj.Core
return adapter;
}
#endregion
-
#region ExecuteDataTable
///
/// 说明:执行sql返回DataTable
- /// 创建人:龚宇超
- /// 创建日期:2017-07-24
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
/// The command text.
/// DataTable.
@@ -109,28 +119,21 @@ namespace Lskj.Core
}
///
/// 说明:执行sql返回DataTable
- /// 创建人:龚宇超
- /// 创建日期:2017-07-24
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
/// The command text.
/// DataTable.
- public static DataTable ExecuteDataTable(string cmdText, params SqlParameter[] commandParameters)
+ public static DataTable ExecuteDataTable(string cmdText, params DbParameter[] commandParameters)
{
return ExecuteDataSet(CommandType.Text, cmdText, "temp", commandParameters).Tables[0];
}
-
///
/// 说明:执行sql返回指定字段值
- /// 创建人:龚宇超
- /// 创建日期:2017-08-15
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
/// Name of the field.
/// The command text.
@@ -150,18 +153,15 @@ namespace Lskj.Core
}
///
/// 说明:执行sql返回指定字段值
- /// 创建人:龚宇超
- /// 创建日期:2017-11-27
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
/// Name of the field.
/// The command text.
/// The command parameters.
/// System.Object.
- public static object ExecuteObject(string fieldName, string cmdText, params SqlParameter[] commandParameters)
+ public static object ExecuteObject(string fieldName, string cmdText, params DbParameter[] commandParameters)
{
object result = null;
try
@@ -176,12 +176,9 @@ namespace Lskj.Core
}
///
/// 说明:执行sql返回指定字段值
- /// 创建人:龚宇超
- /// 创建日期:2017-08-15
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
/// Name of the field.
/// The command text.
@@ -193,26 +190,21 @@ namespace Lskj.Core
}
///
/// 说明:执行sql返回指定字段值
- /// 创建人:龚宇超
- /// 创建日期:2017-11-27
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
/// Name of the field.
/// The command text.
/// The command parameters.
/// System.String.
- public static string ExecuteString(string fieldName, string cmdText, params SqlParameter[] commandParameters)
+ public static string ExecuteString(string fieldName, string cmdText, params DbParameter[] commandParameters)
{
object obj = ExecuteObject(fieldName, cmdText, commandParameters);
return obj == null ? "" : obj.ToString();
}
#endregion
-
#region ExecuteDataSet
-
///
/// 说明:查询结果集
/// 创建人:龚宇超
@@ -227,7 +219,7 @@ namespace Lskj.Core
/// Name of the tab.
/// The command parameters.
/// DataSet.
- public static DataSet ExecuteDataSet(int cmdType, string cmdText, string tabName, params SqlParameter[] commandParameters)
+ public static DataSet ExecuteDataSet(int cmdType, string cmdText, string tabName, params DbParameter[] commandParameters)
{
CommandType _cmdType = CommandType.Text;
switch (cmdType)
@@ -255,14 +247,15 @@ namespace Lskj.Core
/// 表名
/// 参数
/// DataSet.
- public static DataSet ExecuteDataSet(CommandType cmdType, string cmdText, string tabName, params SqlParameter[] commandParameters)
+ public static DataSet ExecuteDataSet(CommandType cmdType, string cmdText, string tabName, params DbParameter[] commandParameters)
{
DataSet set2;
- SqlCommand cmd = new SqlCommand();
+ DbCommand cmd = dbFactory.CreateCommand();
try
{
PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters);//sql参数处理
- SqlDataAdapter adapter = new SqlDataAdapter(cmd);//创建对象,与sql命令对象绑定
+ DbDataAdapter adapter = dbFactory.CreateDataAdapter();
+ adapter.SelectCommand = cmd;//创建对象,与sql命令对象绑定
DataSet dataSet = new DataSet();
adapter.Fill(dataSet, tabName);//填充数据。第二个参数是数据集中内存表的名字,可以与数据库中的不同
//adapter.FillSchema(dataSet, SchemaType.Mapped, tabName);
@@ -286,17 +279,13 @@ namespace Lskj.Core
{
cmd.Dispose();
}
-
return set2;
}
///
/// 说明:查询结果集
- /// 创建人:龚宇超
- /// 创建日期:2017-07-24
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
/// 语句类型存储过程或者sql语句
/// 执行内容
@@ -308,12 +297,9 @@ namespace Lskj.Core
}
///
/// 说明:查询结果集
- /// 创建人:龚宇超
- /// 创建日期:2017-07-24
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
/// 执行内容
/// DataSet.
@@ -323,34 +309,35 @@ namespace Lskj.Core
}
///
/// 说明:查询结果集
- /// 创建人:龚宇超
- /// 创建日期:2017-07-24
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
/// Name of the procedure.
/// 表名
/// The parameter names.
/// The parameter values.
/// DataSet.
- public static DataSet ExecuteDataSet(string procedureName, string tabName, string[] parameterNames, object[] parameterValues)
+ public static DataSet ExecuteDataSet(string procedureName, string tabName, string[] parameterNames, DbParameter[] parameterValues)
{
DataSet set2;
try
{
- SqlCommand cmd = new SqlCommand(procedureName, _connection);
+ DbCommand cmd = dbFactory.CreateCommand();
+ cmd.CommandText = procedureName;
cmd.CommandType = CommandType.StoredProcedure;
-
if (parameterNames != null && parameterValues != null)
{
for (int i = 0; i < parameterNames.Length && i < parameterValues.Length; i++)
{
- cmd.Parameters.AddWithValue(parameterNames[i], parameterValues[i]);
+ DbParameter dbParameter = dbFactory.CreateParameter();
+ dbParameter.ParameterName = parameterNames[i];
+ dbParameter.Value = parameterValues[i];
+ cmd.Parameters.Add(dbParameter);
}
}
- SqlDataAdapter adapter = new SqlDataAdapter(cmd);
+ DbDataAdapter adapter = dbFactory.CreateDataAdapter();
+ adapter.SelectCommand = cmd;
DataSet dataSet = new DataSet();
adapter.Fill(dataSet, tabName);
set2 = dataSet;
@@ -362,30 +349,63 @@ namespace Lskj.Core
return set2;
}
#endregion
-
#region ExecuteNonQuery
///
/// 说明:执行sql语句或者存储过程
- /// 创建人:龚宇超
- /// 创建日期:2017-07-24
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
/// Type of the command.
/// The command text.
/// The command parameters.
/// System.Int32.
- public static int ExecuteNonQuery(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
+ public static int ExecuteNonQuery(CommandType cmdType, string cmdText, params DbParameter[] commandParameters)
{
- SqlCommand cmd = new SqlCommand();
+ DbCommand cmd = dbFactory.CreateCommand();
int num = 0;
try
{
-
- PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters);
- num = cmd.ExecuteNonQuery();
+ if (_connection is KdbndpConnection)
+ {
+ if (cmdType == CommandType.StoredProcedure)
+ {
+ PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters);
+ DbDataAdapter adapter = dbFactory.CreateDataAdapter();
+ adapter.SelectCommand = cmd;
+ DataSet dataSet = new DataSet();
+ adapter.Fill(dataSet);
+ if (dataSet.Tables.Count > 0)
+ {
+ DataTable resultTable = dataSet.Tables[dataSet.Tables.Count - 1];
+ int.TryParse(resultTable.Rows[0]["execcount"] + "", out num);
+ string returnValue = resultTable.Rows[0]["returnValue"] + "";
+ string outputValue = resultTable.Rows[0]["outputValue"] + "";
+ for (int i = 0; i < commandParameters.Length; i++)
+ {
+ DbParameter sqlParameter = commandParameters[i];
+ if (sqlParameter.Direction == ParameterDirection.ReturnValue)
+ {
+ sqlParameter.Value = returnValue;
+ }
+ if (sqlParameter.Direction == ParameterDirection.Output)
+ {
+ sqlParameter.Value = outputValue;
+ }
+ }
+ }
+ }
+ else
+ {
+ PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters);
+ num = cmd.ExecuteNonQuery();
+ }
+ }
+ else if (_connection is SqlConnection)
+ {
+ PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters);
+ num = cmd.ExecuteNonQuery();
+ }
cmd.Parameters.Clear();
}
catch (Exception e)
@@ -408,29 +428,63 @@ namespace Lskj.Core
}
return num;
}
-
///
/// 说明:执行sql语句或者存储过程,带事务
- /// 创建人:龚宇超
- /// 创建日期:2017-07-24
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
- /// Type of the command.
- /// The command text.
- /// The command parameters.
- /// System.Int32.
- public static int ExecuteNonQuery(CommandType cmdType, string cmdText, SqlTransaction Trans,int a ,params SqlParameter[] commandParameters)
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static int ExecuteNonQuery(CommandType cmdType, string cmdText, DbTransaction Trans, int a, params DbParameter[] commandParameters)
{
- SqlCommand cmd = new SqlCommand();
+ DbCommand cmd = dbFactory.CreateCommand();
int num = 0;
try
{
-
- PrepareCommand(cmd, _connection, Trans, cmdType, cmdText, commandParameters);
- num = cmd.ExecuteNonQuery();
+ if (_connection is KdbndpConnection)
+ {
+ if (cmdType == CommandType.StoredProcedure)
+ {
+ PrepareCommand(cmd, _connection, Trans, cmdType, cmdText, commandParameters);
+ DbDataAdapter adapter = dbFactory.CreateDataAdapter();
+ adapter.SelectCommand = cmd;
+ DataSet dataSet = new DataSet();
+ adapter.Fill(dataSet);
+ if (dataSet.Tables.Count > 0)
+ {
+ DataTable resultTable = dataSet.Tables[dataSet.Tables.Count - 1];
+ int.TryParse(resultTable.Rows[0]["execcount"] + "", out num);
+ string returnValue = resultTable.Rows[0]["returnValue"] + "";
+ string outputValue = resultTable.Rows[0]["outputValue"] + "";
+ for (int i = 0; i < commandParameters.Length; i++)
+ {
+ DbParameter sqlParameter = commandParameters[i];
+ if (sqlParameter.Direction == ParameterDirection.ReturnValue)
+ {
+ sqlParameter.Value = returnValue;
+ }
+ if (sqlParameter.Direction == ParameterDirection.Output)
+ {
+ sqlParameter.Value = outputValue;
+ }
+ }
+ }
+ }
+ else
+ {
+ PrepareCommand(cmd, _connection, Trans, cmdType, cmdText, commandParameters);
+ num = cmd.ExecuteNonQuery();
+ }
+ }
+ else if (_connection is SqlConnection)
+ {
+ PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters);
+ num = cmd.ExecuteNonQuery();
+ }
cmd.Parameters.Clear();
}
catch (Exception e)
@@ -453,15 +507,11 @@ namespace Lskj.Core
}
return num;
}
-
///
/// 说明:执行sql语句或者存储过程
- /// 创建人:龚宇超
- /// 创建日期:2017-07-24
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
/// Type of the command.
/// The command text.
@@ -472,12 +522,9 @@ namespace Lskj.Core
}
///
/// 说明:执行sql语句或者存储过程
- /// 创建人:龚宇超
- /// 创建日期:2017-07-24
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
/// The command text.
/// System.Int32.
@@ -486,29 +533,25 @@ namespace Lskj.Core
return ExecuteNonQuery(CommandType.Text, cmdText);
}
#endregion
-
#region ExecuteReader
///
/// 说明:执行sql语句或者存储过程并返回结果集(只读、只进)
- /// 创建人:龚宇超
- /// 创建日期:2017-07-24
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
/// Type of the command.
/// The command text.
/// The command parameters.
/// SqlDataReader.
- public static SqlDataReader ExecuteReader(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
+ public static DbDataReader ExecuteReader(CommandType cmdType, string cmdText, params DbParameter[] commandParameters)
{
- SqlDataReader reader2;
- SqlCommand cmd = new SqlCommand();
+ DbDataReader reader2;
+ DbCommand cmd = dbFactory.CreateCommand();
try
{
PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters);
- SqlDataReader reader = cmd.ExecuteReader();
+ DbDataReader reader = cmd.ExecuteReader();
cmd.Parameters.Clear();
reader2 = reader;
}
@@ -519,7 +562,6 @@ namespace Lskj.Core
return reader2;
}
#endregion
-
#region ExecuteCommand
///
/// 说明:执行sql语句或者存储过程并返回SqlCommand(只读、只进)
@@ -534,9 +576,9 @@ namespace Lskj.Core
/// The command text.
/// The command parameters.
/// SqlDataReader.
- public static SqlCommand ExecuteCommand(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
+ public static DbCommand ExecuteCommand(CommandType cmdType, string cmdText, params DbParameter[] commandParameters)
{
- SqlCommand cmd = new SqlCommand();
+ DbCommand cmd = dbFactory.CreateCommand();
try
{
PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters);
@@ -549,25 +591,21 @@ namespace Lskj.Core
return cmd;
}
#endregion
-
#region ExecuteScalar
///
/// 说明:执行sql语句或者存储过程并返回结果集第一行第一列
- /// 创建人:龚宇超
- /// 创建日期:2017-07-24
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
/// The connectionection.
/// Type of the command.
/// The command text.
/// The command parameters.
/// System.Object.
- public static object ExecuteScalar(SqlConnection Connectionection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
+ public static object ExecuteScalar(DbConnection Connectionection, CommandType cmdType, string cmdText, params DbParameter[] commandParameters)
{
- SqlCommand cmd = new SqlCommand();
+ DbCommand cmd = dbFactory.CreateCommand();
PrepareCommand(cmd, Connectionection, null, cmdType, cmdText, commandParameters);
object obj2 = cmd.ExecuteScalar();
cmd.Parameters.Clear();
@@ -575,30 +613,25 @@ namespace Lskj.Core
}
///
/// 说明:执行sql语句或者存储过程并返回结果集第一行第一列
- /// 创建人:龚宇超
- /// 创建日期:2017-07-24
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
/// Type of the command.
/// The command text.
/// The command parameters.
/// System.Object.
- public static object ExecuteScalar(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
+ public static object ExecuteScalar(CommandType cmdType, string cmdText, params DbParameter[] commandParameters)
{
try
{
- SqlCommand cmd = new SqlCommand();
- {
- PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters);
- object obj2 = cmd.ExecuteScalar();
- cmd.Parameters.Clear();
- return obj2;
- }
+ DbCommand cmd = dbFactory.CreateCommand();
+ PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters);
+ object obj2 = cmd.ExecuteScalar();
+ cmd.Parameters.Clear();
+ return obj2;
}
- catch (Exception e)
+ catch (Exception e)
{
if (e.Message.StartsWith("在从服务器接收结果时发生传输级错误") ||
e.Message.StartsWith("在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误") ||
@@ -612,85 +645,66 @@ namespace Lskj.Core
//throw;
}
}
-
}
///
/// 说明:执行sql语句或者存储过程并返回结果集第一行第一列
- /// 创建人:龚宇超
- /// 创建日期:2017-07-24
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
/// Type of the command.
/// The command text.
/// System.Object.
public static object ExecuteScalar(CommandType cmdType, string cmdText)
{
- SqlCommand cmd = new SqlCommand();
- {
- PrepareCommand(cmd, _connection, null, cmdType, cmdText, null);
- object obj2 = cmd.ExecuteScalar();
- cmd.Parameters.Clear();
- return obj2;
- }
+ DbCommand cmd = dbFactory.CreateCommand();
+ PrepareCommand(cmd, _connection, null, cmdType, cmdText, null);
+ object obj2 = cmd.ExecuteScalar();
+ cmd.Parameters.Clear();
+ return obj2;
}
///
/// 说明:执行sql语句或者存储过程并返回结果集第一行第一列
- /// 创建人:龚宇超
- /// 创建日期:2017-08-21
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
/// The command text.
/// System.Object.
public static object ExecuteScalar(string cmdText)
{
- SqlCommand cmd = new SqlCommand();
- {
- PrepareCommand(cmd, _connection, null, CommandType.Text, cmdText, null);
- object obj2 = cmd.ExecuteScalar();
- cmd.Parameters.Clear();
- return obj2;
- }
+ DbCommand cmd = dbFactory.CreateCommand();
+ PrepareCommand(cmd, _connection, null, CommandType.Text, cmdText, null);
+ object obj2 = cmd.ExecuteScalar();
+ cmd.Parameters.Clear();
+ return obj2;
}
-
///
/// 说明:执行sql语句或者存储过程并返回结果集第一行第一列,带事务
- /// 创建人:龚宇超
- /// 创建日期:2017-08-21
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
- /// The command text.
- /// System.Object.
- public static object ExecuteScalar(string cmdText,SqlTransaction Trans,int a,int b)
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static object ExecuteScalar(string cmdText, DbTransaction Trans)
{
- SqlCommand cmd = new SqlCommand();
- {
- PrepareCommand(cmd, _connection, Trans, CommandType.Text, cmdText, null);
- object obj2 = cmd.ExecuteScalar();
- cmd.Parameters.Clear();
- return obj2;
- }
+ DbCommand cmd = dbFactory.CreateCommand();
+ PrepareCommand(cmd, _connection, Trans, CommandType.Text, cmdText, null);
+ object obj2 = cmd.ExecuteScalar();
+ cmd.Parameters.Clear();
+ return obj2;
}
-
#endregion
-
#region PrepareCommand
///
- /// 说明: sql参数处理
- /// 创建人:龚宇超
- /// 创建日期:2017-07-24
- /// 修改人:
- /// 修改日期:
- /// 修改备注:
- /// 版本:1.0
+ /// 说明:sql参数处理
+ /// 创建者:朗速科技有限公司
+ /// 创建日期:2023-12-28
+ /// 功能关联:公版方法
///
/// The command.
/// The connection.
@@ -698,28 +712,189 @@ namespace Lskj.Core
/// Type of the command.
/// The command text.
/// The command parms.
- private static void PrepareCommand(SqlCommand cmd, SqlConnection Connection, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
+ private static void PrepareCommand(DbCommand cmd, DbConnection Connection, DbTransaction trans, CommandType cmdType, string cmdText, DbParameter[] cmdParms)
{
- if (Connection.State != ConnectionState.Open)
+ try
{
- Connection.Open();
- }
- cmd.Connection = Connection;
- cmd.CommandTimeout = CommandTimeout;
- cmd.CommandText = cmdText;
- if (trans != null)
- {
- cmd.Transaction = trans;
- }
- cmd.CommandType = cmdType;
- if (cmdParms != null)
- {
- foreach (SqlParameter parameter in cmdParms)
+ if (connectionType == ConnectionType.KdbnServer)
{
- cmd.Parameters.Add(parameter);
+ if (Connection.State == ConnectionState.Open)
+ {
+ Connection.Close();
+ }
+ Connection.Open();
+ cmd.Connection = Connection;
+ cmd.CommandTimeout = CommandTimeout;
+ cmd.CommandText = cmdText;
+ if (trans != null)
+ {
+ cmd.Transaction = trans;
+ }
+ DbParameter[] kdbndpParameters = CastKdbndpParameterArray(cmdParms);
+ if (cmdType == CommandType.StoredProcedure)
+ {
+ string execSqlParas = "";
+ if (cmdParms != null)
+ {
+ foreach (KdbndpParameter parameter in kdbndpParameters)
+ {
+ if (parameter.Direction == ParameterDirection.ReturnValue)
+ {
+ continue;
+ }
+ string value = (parameter.Value + "").Replace("'", "''");
+ if (parameter.Direction == ParameterDirection.Output)
+ {
+ execSqlParas += $"@outputValue output,";
+ }
+ else
+ {
+ execSqlParas += $"'{value}',";
+ }
+ }
+ }
+ StringBuilder stringBuilder = new StringBuilder();
+ stringBuilder.AppendLine("declare @returnValue varchar(max)");
+ stringBuilder.AppendLine("declare @outputValue varchar(max)");
+ stringBuilder.AppendLine($"exec @returnValue = {cmdText} {execSqlParas.TrimEnd(',')}");
+ stringBuilder.AppendLine("select @@ROWCOUNT execcount,@returnValue returnValue,@outputValue outputValue");
+ cmd.CommandType = CommandType.Text;
+ cmd.CommandText = stringBuilder.ToString();
+ }
+ else
+ {
+ cmd.CommandText = cmdText;
+ if (cmdParms != null)
+ {
+ foreach (KdbndpParameter parameter in kdbndpParameters)
+ {
+ cmd.Parameters.Add(parameter);
+ }
+ }
+ }
}
+ else if (connectionType == ConnectionType.SqlServer || connectionType == ConnectionType.DmServer)
+ {
+ if (Connection.State != ConnectionState.Open)
+ {
+ Connection.Open();
+ }
+ cmd.Connection = Connection;
+ cmd.CommandTimeout = CommandTimeout;
+ cmd.CommandText = cmdText;
+ if (trans != null)
+ {
+ cmd.Transaction = trans;
+ }
+ cmd.CommandType = cmdType;
+ if (cmdParms != null)
+ {
+ foreach (SqlParameter parameter in cmdParms)
+ {
+ cmd.Parameters.Add(parameter);
+ }
+ }
+ }
+
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine(ex.Message);
+ throw;
}
}
#endregion
- }
-}
+ ///
+ /// 转换为人大金仓参数集合
+ ///
+ ///
+ ///
+ public static DbParameter[] CastKdbndpParameterArray(DbParameter[] commandParameters)
+ {
+ if (commandParameters == null)
+ {
+ return null;
+ }
+ DbParameter[] kdbndpParameters = new DbParameter[commandParameters.Length];
+ for (int i = 0; i < commandParameters.Length; i++)
+ {
+ DbParameter sqlParameter = commandParameters[i];
+ kdbndpParameters[i] = CastKdbndpParameter(sqlParameter);
+ }
+ return kdbndpParameters;
+ }
+ ///
+ /// 转换为人大金仓参数
+ ///
+ ///
+ ///
+ public static DbParameter CastKdbndpParameter(DbParameter parameter)
+ {
+ KdbndpParameter kdbndpParameter = new KdbndpParameter();
+ KdbndpDbType kdbndpDbType = KdbndpDbType.Text;
+ if (parameter is SqlParameter sqlParameter)
+ {
+ switch (sqlParameter.SqlDbType)
+ {
+ case SqlDbType.BigInt:
+ kdbndpDbType = KdbndpDbType.SqlServer_Bigint;
+ break;
+ case SqlDbType.Binary:
+ kdbndpDbType = KdbndpDbType.SqlServer_Binary;
+ break;
+ case SqlDbType.Bit:
+ kdbndpDbType = KdbndpDbType.Bit;
+ break;
+ case SqlDbType.Char:
+ kdbndpDbType = KdbndpDbType.Char;
+ break;
+ case SqlDbType.DateTime:
+ kdbndpDbType = KdbndpDbType.DateTime;
+ break;
+ case SqlDbType.Decimal:
+ kdbndpDbType = KdbndpDbType.SqlServer_Numeric;
+ break;
+ case SqlDbType.Float:
+ kdbndpDbType = KdbndpDbType.SqlServer_Float;
+ break;
+ case SqlDbType.Image:
+ kdbndpDbType = KdbndpDbType.Image;
+ break;
+ case SqlDbType.Int:
+ kdbndpDbType = KdbndpDbType.SqlServer_Int;
+ break;
+ case SqlDbType.Money:
+ kdbndpDbType = KdbndpDbType.SqlServer_Money;
+ break;
+ case SqlDbType.NChar:
+ kdbndpDbType = KdbndpDbType.NChar;
+ break;
+ case SqlDbType.NText:
+ kdbndpDbType = KdbndpDbType.Ntext;
+ break;
+ case SqlDbType.NVarChar:
+ kdbndpDbType = KdbndpDbType.Text;
+ break;
+ case SqlDbType.Real:
+ kdbndpDbType = KdbndpDbType.SqlServer_Real;
+ break;
+ case SqlDbType.SmallDateTime:
+ kdbndpDbType = KdbndpDbType.SmallDateTime;
+ break;
+ case SqlDbType.SmallInt:
+ kdbndpDbType = KdbndpDbType.SqlServer_Smallint;
+ break;
+ case SqlDbType.Text:
+ kdbndpDbType = KdbndpDbType.Text;
+ break;
+ case SqlDbType.Timestamp:
+ kdbndpDbType = KdbndpDbType.Timestamp;
+ break;
+ case SqlDbType.TinyInt:
+ kdbndpDbType = KdbndpDbType.SqlServer_Tinyint;
+ break;
+ case SqlDbType.VarBinary:
+ kdbndpDbType = KdbndpDbType.SqlServer_VarBinary;
+ break;
+ case SqlDbType.VarChar:
+ kdbndp
\ No newline at end of file