public class SqlServerService
{
public string CONN_STRING { get; set; } = "Data Source=.;Database=dbname;uid=sa;pwd=123;min pool size=1; max pool size=64";
/// <summary>
/// 数据库连接
/// </summary>
private SqlConnection connection; private static log4net.ILog logger = log4net.LogManager.GetLogger(typeof(SqlServerService)); /// <summary>
///
/// </summary>
public SqlServerService()
{
connection = new SqlConnection(CONN_STRING);
//Console.WriteLine(""+CONN_STRING);
}
/// <summary>
///
/// </summary>
/// <param name="conn_str">指定的字符串连接</param>
public SqlServerService(string conn_str)
{
CONN_STRING = conn_str;
connection = new SqlConnection(CONN_STRING);
} /// <summary>
/// 执行操作语句 delete/insert/update
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public long Execute(string sql)
{
long rest = 0;
if (connection.State == System.Data.ConnectionState.Open)
{
try
{
connection.Close();
}
catch (Exception ex)
{
logger.Warn("关闭异常", ex);
}
} try
{
this.connection.Open();
SqlCommand cmd = new SqlCommand(sql, this.connection);
rest = cmd.ExecuteNonQuery();
this.connection.Close(); }catch(Exception ex)
{
logger.Warn("执行操作语句异常", ex);
} return rest;
} /// <summary>
/// 获取最后插入ID
/// </summary>
/// <param name="tabname"></param>
/// <returns></returns>
public long GetLastInsertID(string tabname)
{
//SELECT IDENT_CURRENT('dtPlatGroup')
return FetchFirst<long>("SELECT IDENT_CURRENT('"+tabname+"')");
} /// <summary>
/// 查询数据集
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public List<Hashtable> FetchAll(string sql)
{
return Select(sql);
}
/// <summary>
/// 查询数据集
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public List<Hashtable> Select(string sql)
{
List<Hashtable> lst = new List<Hashtable>();
if (connection.State == System.Data.ConnectionState.Open)
{
try
{
connection.Close();
}
catch (Exception ex)
{
logger.Warn("关闭异常", ex);
}
}
try
{
this.connection.Open();
SqlCommand cmd = new SqlCommand(sql, this.connection);
SqlDataReader sdr = cmd.ExecuteReader();
int fieldCount = sdr.FieldCount;
while (sdr.Read())
{
Hashtable ht = new Hashtable();
string _key = string.Empty;
for (int i = 0; i < fieldCount; i++)
{
_key = sdr.GetName(i);
ht[_key] = sdr[i];
}
lst.Add(ht);
} this.connection.Close();
}
catch (Exception ex)
{
logger.Warn("执行查询异常", ex);
} return lst;
} /// <summary>
/// 只读取第一行数据
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public Hashtable FetchRow(string sql)
{
Hashtable ht = new Hashtable();
if (connection.State == System.Data.ConnectionState.Open)
{
try
{
connection.Close();
}
catch (Exception ex)
{
logger.Warn("关闭异常", ex);
}
} try
{
this.connection.Open();
SqlCommand cmd = new SqlCommand(sql, this.connection);
SqlDataReader sdr = cmd.ExecuteReader();
int fieldCount = sdr.FieldCount;
while (sdr.Read())
{
string _key = string.Empty;
for(int i = 0; i < fieldCount; i++)
{
_key = sdr.GetName(i);
ht[_key] = sdr[i];
}
break;
} this.connection.Close();
}catch(Exception ex)
{
logger.Warn("执行查询异常", ex);
} return ht;
} /// <summary>
/// 获取第一行第一列值
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sql"></param>
/// <returns></returns>
public T FetchFirst<T>(string sql)
{
T t;
if (connection.State == System.Data.ConnectionState.Open)
{
try
{
connection.Close();
}
catch (Exception ex)
{
logger.Warn("关闭异常", ex);
}
}
try
{
this.connection.Open(); SqlCommand cmd = new SqlCommand(sql, this.connection);
t = (T)cmd.ExecuteScalar();
this.connection.Close();
}
catch (Exception ex)
{
t = default(T);
logger.Warn("查询异常", ex);
} return t;
} /// <summary>
/// 检查一个连接是否正常
/// </summary>
/// <returns></returns>
public bool Ping()
{
return Ping(this.connection);
}
/// <summary>
/// 检查一个连接是否正常
/// <paramref name="connection"/>
/// </summary>
/// <returns></returns>
public bool Ping(SqlConnection connection)
{
bool rest = false;
if ( connection.State == System.Data.ConnectionState.Open)
{
try
{
connection.Close();
}
catch(Exception ex)
{
logger.Warn("关闭异常", ex);
}
} // select top 1 1 from sys.tables;
try
{
connection.Open();
SqlCommand cmd = new SqlCommand("select top 1 1 from sys.tables", connection);
cmd.ExecuteScalar();
connection.Close();
rest = true;
}
catch(Exception ex)
{
logger.Warn("调试Ping异常", ex);
} return rest;
}
}
 
 
 

C#操作SQLServer2012类的更多相关文章

  1. XML格式示例 与 XML操作(读取)类封装

    header('Content-Type: text/xml'); <?xml version="1.0" encoding="utf-8" standa ...

  2. 简洁的PHP操作SQLite类

    SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了. ...

  3. C#工具类:Json操作帮助类(转载)

    原文转载自C#工具类:Json操作帮助类_IT技术小趣屋. Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来 ...

  4. 【转载】C#工具类:Json操作帮助类

    Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来简化相应的操作,该工具类中包含以下功能:对象转JSON.数据 ...

  5. 【转载】微软官方提供的Sqlserver数据库操作帮助类SQLHelper类

    在.NET平台中,C#语言一般使用ADO.NET组件来操作Sqlserver数据库,通过ADO.NET组件可以实现连接数据库.查询数据集.执行SQL语句以及关闭数据库连接等操作,为此网上有很多开发者自 ...

  6. oracleHelper 操作帮助类

    using System; using System.Configuration; using System.Data; using System.Collections; using Oracle. ...

  7. Java反射机制demo(六)—获得并操作一个类的属性

    Java反射机制demo(六)—获得并操作一个类的属性 获得并操作一个类的属性?! 不可思议啊,一个类的属性一般都是私有成员变量啊,private修饰符啊! 但是毫无疑问,这些东西在Java的反射机制 ...

  8. 第三百零七节,Django框架,models.py模块,数据库操作——表类容的增删改查

    Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...

  9. 五 Django框架,models.py模块,数据库操作——表类容的增删改查

    Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...

随机推荐

  1. TCP连接状态管理

    tcp 连接过程 tcp 状态机

  2. symfony command

    symfony 的command系统,有两部分构成:Application和command 1. Application是一个容器,负责对command进行管理. 2.command是每一个具体的命令 ...

  3. v-charts

    因为工作需要,使用v-chart也有一段时间了,期间针对配置图表也遇到了不少问题,在这里总结一下. 如何配置图表信息 echart的配置项可谓是相当的海量,能不看就不看.而v-chart对其进行了不少 ...

  4. 微信小程序组件通信

    父子通信 在子组件的对应js中 properties:{ prop名字:数据类型, prop名字:{ type:数据类型, value:默认值 } } 在父组件的wxml模板中找到子组件标签 < ...

  5. Oracle GoldenGate 18.1 支持的DB和OS列表

    Product Release Processor Type OS Version OS Update Type OS Update Level Run Mode 32/64 Bit Database ...

  6. ltp-ddt emmc_dd_rw

    emmc_dd_rw EMMC_M_FUNC_DD_RW_500M source "common.sh"; install_modules.sh "emmc"; ...

  7. ElasticSearch(十)Elasticsearch检索出的数据列表按字段匹配的优先顺序及搜索单词拼音一部分搜不到数据

    检索出的数据列表按字段匹配的优先顺序 一.举例 比如,发布一篇文章,文章包括基本的字段包括标题.发布时间.点击率.关键字.内容.当在页面中输入“教育”搜索关键词,会检索出指定字段包括“教育”的所有数据 ...

  8. pandas替换一列中的汉字为数字

    表格的一列“总金额”应该全部为数字,但其中少数项出现汉字,应该将汉字替换为数字,才能进行后面的计算. 先定义一个函数: def is_number(s): try: float(s) return T ...

  9. 记一次JAVAWEB项目部署

    需求 原本服务器上tomcat部署了一个javaweb项目在80端口,这次要部署另一个javaweb项目在8090端口,或者同时部署在同一端口不同目录下. 解决方法 不同端口部署 不同端口部署我们需要 ...

  10. Vue PC后台系统组件大全

    1.https://vue.ant.design/ 2.http://element-cn.eleme.io/#/zh-CN 3.https://www.iviewui.com/ 4.https:// ...