mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 20:38:16 +08:00
- 增加 IAdo.ExecuteConnectTest 快速判断连接是否可用 #113;
This commit is contained in:
@ -2479,6 +2479,14 @@
|
||||
<param name="obj">new { id = 1 } 或者 Dictionary<string, object></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:FreeSql.IAdo.ExecuteConnectTest">
|
||||
<summary>
|
||||
测试数据库是否连接正确,本方法执行如下命令:<para></para>
|
||||
MySql/SqlServer/PostgreSQL/达梦/人大金仓/神通: SELECT 1<para></para>
|
||||
Oracle: SELECT 1 FROM dual<para></para>
|
||||
</summary>
|
||||
<returns>true: 成功, false: 失败</returns>
|
||||
</member>
|
||||
<member name="M:FreeSql.IAdo.ExecuteReader(System.Action{FreeSql.Internal.Model.FetchCallbackArgs{System.Data.Common.DbDataReader}},System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
|
||||
<summary>
|
||||
查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
|
||||
@ -2618,6 +2626,14 @@
|
||||
<param name="parms"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:FreeSql.IAdo.ExecuteConnectTestAsync">
|
||||
<summary>
|
||||
测试数据库是否连接正确,本方法执行如下命令:<para></para>
|
||||
MySql/SqlServer/PostgreSQL/达梦/人大金仓/神通: SELECT 1<para></para>
|
||||
Oracle: SELECT 1 FROM dual<para></para>
|
||||
</summary>
|
||||
<returns>true: 成功, false: 失败</returns>
|
||||
</member>
|
||||
<member name="M:FreeSql.IAdo.ExecuteReaderAsync(System.Func{FreeSql.Internal.Model.FetchCallbackArgs{System.Data.Common.DbDataReader},System.Threading.Tasks.Task},System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
|
||||
<summary>
|
||||
查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
|
||||
|
@ -62,6 +62,14 @@ namespace FreeSql
|
||||
/// <returns></returns>
|
||||
DbParameter[] GetDbParamtersByObject(object obj);
|
||||
|
||||
/// <summary>
|
||||
/// 测试数据库是否连接正确,本方法执行如下命令:<para></para>
|
||||
/// MySql/SqlServer/PostgreSQL/达梦/人大金仓/神通: SELECT 1<para></para>
|
||||
/// Oracle: SELECT 1 FROM dual<para></para>
|
||||
/// </summary>
|
||||
/// <returns>true: 成功, false: 失败</returns>
|
||||
bool ExecuteConnectTest();
|
||||
|
||||
/// <summary>
|
||||
/// 查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
|
||||
/// </summary>
|
||||
@ -243,6 +251,14 @@ namespace FreeSql
|
||||
#if net40
|
||||
#else
|
||||
#region async
|
||||
/// <summary>
|
||||
/// 测试数据库是否连接正确,本方法执行如下命令:<para></para>
|
||||
/// MySql/SqlServer/PostgreSQL/达梦/人大金仓/神通: SELECT 1<para></para>
|
||||
/// Oracle: SELECT 1 FROM dual<para></para>
|
||||
/// </summary>
|
||||
/// <returns>true: 成功, false: 失败</returns>
|
||||
Task<bool> ExecuteConnectTestAsync();
|
||||
|
||||
/// <summary>
|
||||
/// 查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
|
||||
/// </summary>
|
||||
|
@ -95,6 +95,27 @@ namespace FreeSql.Internal.CommonProvider
|
||||
var props = tb?.Properties ?? type.GetPropertiesDictIgnoreCase();
|
||||
return props;
|
||||
}
|
||||
|
||||
public bool ExecuteConnectTest()
|
||||
{
|
||||
try
|
||||
{
|
||||
switch (DataType)
|
||||
{
|
||||
case DataType.Oracle:
|
||||
case DataType.OdbcOracle:
|
||||
ExecuteNonQuery(" SELECT 1 FROM dual");
|
||||
return true;
|
||||
}
|
||||
ExecuteNonQuery(" SELECT 1");
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public List<T> Query<T>(string cmdText, object parms = null) => Query<T>(null, null, null, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));
|
||||
public List<T> Query<T>(DbTransaction transaction, string cmdText, object parms = null) => Query<T>(null, null, transaction, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));
|
||||
public List<T> Query<T>(DbConnection connection, DbTransaction transaction, string cmdText, object parms = null) => Query<T>(null, connection, transaction, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));
|
||||
|
@ -14,6 +14,26 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
partial class AdoProvider
|
||||
{
|
||||
async public Task<bool> ExecuteConnectTestAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
switch (DataType)
|
||||
{
|
||||
case DataType.Oracle:
|
||||
case DataType.OdbcOracle:
|
||||
await ExecuteNonQueryAsync(" SELECT 1 FROM dual");
|
||||
return true;
|
||||
}
|
||||
await ExecuteNonQueryAsync(" SELECT 1");
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public Task<List<T>> QueryAsync<T>(string cmdText, object parms = null) => QueryAsync<T>(null, null, null, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));
|
||||
public Task<List<T>> QueryAsync<T>(DbTransaction transaction, string cmdText, object parms = null) => QueryAsync<T>(null, null, transaction, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));
|
||||
public Task<List<T>> QueryAsync<T>(DbConnection connection, DbTransaction transaction, string cmdText, object parms = null) => QueryAsync<T>(null, connection, transaction, CommandType.Text, cmdText, GetDbParamtersByObject(cmdText, parms));
|
||||
|
Reference in New Issue
Block a user