using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using FreeSql;
using CnasSynchronousCommon;
using System.Data.Entity;
namespace CnasSynchronusDAL
{
public static class KingbaseHelper
{
private static IFreeSql fsql;
public static string strNameSpace = string.Empty;
private static char strBiao = '.';
public static (string, string) GetDatabaseAndNamespace(string strServerHost)
{
if (strServerHost.Contains(strBiao))
{
return (strServerHost.Split(strBiao)[0], strServerHost.Split(strBiao)[1]);
}
return ("", "");
}
public static void InitConnectionString(string strServerIP, string strServerPort, string strServerHost, string strServerUser, string strServerPwd)
{
var databaseAndNamespace = GetDatabaseAndNamespace(strServerHost);
strNameSpace = databaseAndNamespace.Item2;
string connectionString = $"Host={strServerIP};Port={strServerPort};Database={databaseAndNamespace.Item1};Username={strServerUser};Password={strServerPwd};";
InitFreeSql(connectionString);
}
public static void InitConnectionString(string connectionString)
{
InitFreeSql(connectionString);
}
private static void InitFreeSql(string connectionString)
{
fsql = new FreeSqlBuilder()
.UseConnectionString(DataType.KingbaseES, connectionString)
.UseAutoSyncStructure(false) // 不自动同步结构
.Build();
}
///
/// 执行SQL语句,返回影响的行数
///
public static int ExecuteNonQuery(string sql, object parameters = null)
{
try
{
return fsql.Ado.ExecuteNonQuery(sql, parameters);
}
catch (Exception ex)
{
AppLog.Error(ex.Message);
throw;
}
}
///
/// 执行SQL语句,返回第一行第一列的值
///
public static T ExecuteScalar(string sql, object parameters = null)
{
try
{
//return fsql.Ado.ExecuteScalar(sql, parameters);
return default(T);
}
catch (Exception ex)
{
AppLog.Error(ex.Message);
throw;
}
}
///
/// 执行SQL查询,返回DataTable
///
public static DataTable ExecuteDataTable(string sql, object parameters = null)
{
try
{
return fsql.Ado.ExecuteDataTable(sql, parameters);
}
catch (Exception ex)
{
AppLog.Error(ex.Message);
return null;
}
}
///
/// 执行SQL查询,返回DataSet
///
public static DataSet ExecuteDataSet(string sql, object parameters = null)
{
try
{
return fsql.Ado.ExecuteDataSet(sql, parameters);
}
catch (Exception ex)
{
AppLog.Error(ex.Message);
throw;
}
}
///
/// 测试数据库连接
///
public static bool TestConnectKingbase()
{
try
{
string connStr = "Host=localhost;Port=54321;Database=test;Username=system;Password=1;";
using (var fsql = new FreeSqlBuilder()
.UseConnectionString(DataType.KingbaseES, connStr)
.Build())
{
return (int)fsql.Ado.ExecuteScalar("SELECT 1") == 1;
}
}
catch (Exception ex)
{
AppLog.Error(ex.Message);
return false;
}
}
}
}