/// <summary>
/// v1.0
/// </summary>
public partial class DbUtils
{
string ConnectionString;
/// <summary>
///
/// </summary>
/// <param name="dbName"></param>
public DbUtils(string dbName)
{
ConnectionString = $"server=.;database={dbName};uid=;pwd=;";
} IDbConnection OpenConnection()
{
var conn = new NpgsqlConnection(ConnectionString);
conn.Open();
return conn;
} public int Execute(string sql, object param = null, IDbTransaction transaction = null)
{
using (var conn = OpenConnection())
{
var result = conn.Execute(sql, param, transaction);
conn.Close();
conn.Dispose();
return result;
}
} public T ExecuteScalar<T>(string sql, object param = null, IDbTransaction transaction = null)
{
using (var conn = OpenConnection())
{
var result = conn.ExecuteScalar<T>(sql, param, transaction);
conn.Close();
conn.Dispose();
return result;
}
} public IEnumerable<T> Query<T>(string sql, object param = null, IDbTransaction transaction = null)
{
using (var conn = OpenConnection())
{
var result = conn.Query<T>(sql, param, transaction);
conn.Close();
conn.Dispose();
return result;
}
} public IEnumerable<T> Query<T>(string sql, int page, int limit, object param = null, IDbTransaction transaction = null)
{
int offset = (page - ) * limit;
sql += $" limit {limit} offset {offset}";
return Query<T>(sql, param);
} public T QueryFirst<T>(string sql, object param = null, IDbTransaction transaction = null)
{
using (var conn = OpenConnection())
{
var result = conn.QueryFirst<T>(sql, param, transaction);
conn.Close();
conn.Dispose();
return result;
}
} public T QueryFirstOrDefault<T>(string sql, object param = null, IDbTransaction transaction = null)
{
using (var conn = OpenConnection())
{
var result = conn.QueryFirstOrDefault<T>(sql, param, transaction);
conn.Close();
conn.Dispose();
return result;
}
} //public static T QueryMultiple<T>(string sql, object param = null, IDbTransaction transaction = null)
//{
// using (var conn = OpenConnection())
// {
// var result = conn.QueryMultiple(sql, param, transaction);
// conn.Close();
// conn.Dispose();
// return result;
// }
//} public async Task<int> ExecuteAsync(string sql, object param = null, IDbTransaction transaction = null)
{
using (var conn = OpenConnection())
{
var result = await conn.ExecuteAsync(sql, param, transaction);
conn.Close();
conn.Dispose();
return result;
}
} public async Task<T> ExecuteScalarAsync<T>(string sql, object param = null, IDbTransaction transaction = null)
{
using (var conn = OpenConnection())
{
var result = await conn.ExecuteScalarAsync<T>(sql, param, transaction);
conn.Close();
conn.Dispose();
return result;
}
} public async Task<IEnumerable<T>> QueryAsync<T>(string sql, object param = null, IDbTransaction transaction = null)
{
using (var conn = OpenConnection())
{
var result = await conn.QueryAsync<T>(sql, param, transaction);
conn.Close();
conn.Dispose();
return result;
}
} public async Task<IEnumerable<T>> QueryAsync<T>(string sql, int page, int limit, object param = null, IDbTransaction transaction = null)
{
int offset = (page - ) * limit;
sql += $" limit {limit} offset {offset}";
return await QueryAsync<T>(sql, param);
} public async Task<T> QueryFirstAsync<T>(string sql, object param = null, IDbTransaction transaction = null)
{
using (var conn = OpenConnection())
{
var result = await conn.QueryFirstAsync<T>(sql, param, transaction);
conn.Close();
conn.Dispose();
return result;
}
} public async Task<T> QueryFirstOrDefaultAsync<T>(string sql, object param = null, IDbTransaction transaction = null)
{
using (var conn = OpenConnection())
{
var result = await conn.QueryFirstOrDefaultAsync<T>(sql, param, transaction);
conn.Close();
conn.Dispose();
return result;
}
}
}
    /// <summary>
///
/// </summary>
public partial class DbUtils
{
/// <summary>
///
/// </summary>
/// <param name="table"></param>
/// <param name="fields"></param>
/// <returns></returns>
public static string GetInsertSQL(string table, string fields)
{
return $"INSERT INTO {table}({fields}) VALUES ({GetInsertFields(fields)});";
}
/// <summary>
///
/// </summary>
/// <param name="table"></param>
/// <param name="fields"></param>
/// <returns></returns>
public static string GetInsertSQLReturnId(string table, string fields)
{
return $"INSERT INTO {table}({fields}) VALUES ({GetInsertFields(fields)}) RETURNING Id;";
}
/// <summary>
///
/// </summary>
/// <param name="talbe"></param>
/// <param name="fields"></param>
/// <returns></returns>
public static string GetUpdateSQL(string talbe, string fields)
{
return $"UPDATE {talbe} SET {GetUpdateFields(fields)} where id=@id";
} static string GetInsertFields(string value)
{
var result = value.Split(new[] { ',', ' ', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
var fields = string.Join(",@", result);
return "@" + fields;
} static string GetUpdateFields(string value)
{
var collection = value.Split(new[] { ',', ' ', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); var sb = new StringBuilder();
foreach (var item in collection)
{
sb.Append(item);
sb.Append("=@");
sb.Append(item);
sb.Append(",");
} if (sb.Length > )
sb.Remove(sb.Length - , ); return sb.ToString();
}
}

最新文章

  1. STM32F412应用开发笔记之二:基本GPIO控制
  2. js整理5
  3. 在source insight中集成astyle
  4. silverlight简单数据绑定3
  5. spring4 security 4 +websocket 实现单点登录
  6. Struts2 本是非单例的,与Spring集成就默认为单例
  7. 如何配置Flash Media Live Encoder (FMLE)从而使用Azure直播服务
  8. [POJ 1151] Atlantis
  9. 征服 Redis + Jedis + Spring (一)—— 配置&amp;常规操作(GET SET DEL)
  10. 操作符、语句、函数——Javascript高级程序设计
  11. POJ-1068 Parencodings---模拟括号的配对
  12. ubuntu中taglist和ctags安装使用
  13. 一键安装Cloud Torrent
  14. tensorflow用dropout解决over fitting-【老鱼学tensorflow】
  15. 【C/C++】实现数据结构广义表
  16. sso cas4.0改造历程--spring-webflow篇
  17. leetcode981
  18. JavaSE基础知识(5)—面向对象(5.3访问修饰符)
  19. 机器学习面试--一句话概括传统ML算法
  20. 将make的输出重定向到文件(转)

热门文章

  1. 蓝屏代码0X0000007B可能是SATA mode问题
  2. 重写Alert
  3. JDBC数据源连接池(4)---自定义数据源连接池
  4. javascript方法--call()
  5. 都是干货---真正的了解scrapy框架
  6. 【JBPM4】判断节点decision 方法1
  7. 01 java 基础:jdk jre path classpath 相关问题
  8. windows下rabbitmq(架构师必备神器)集群搭建
  9. 禁止网页右键和复制,ctrl+a都不行。取消页面默认事件【全】。
  10. oracle 自己改了 spfile 导致起不来