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. Redis4.0 之持久化存储

    redis如果提供缓存服务,可以关闭所有持久化存储,如此一来redis重启后所有数据会丢失 开启rdb或aof持久化存储,能把redis中的数据持久化到磁盘中. rdb和aof对性能都有影响,所以建议 ...

  2. Windows Server 2012安装IIS 8.0

    一.安装 1.鼠标右键[This PC]→[Manage] 2.选择[Add Roles and Features] 3.勾选[.Net Framewore 3.5] 和 [.Net Framewor ...

  3. linux常用英文单词记录

    1.skip 跳过忽略 2.next 下一步3.hostname 主机名4.password 密码5.complete 完成6.network 网络7.conf config configuratio ...

  4. Axure无法签出,团队配合时无法导入项目

    SVN管理项目,团队多人合作维护 在Axure签出时,报错. 提示:无法创建目录 ... 设备上没有空间 SVN也检出失败 当然,还有其他情况 如:未将对象引用设置到对象的实例.等等 个别提示如下图: ...

  5. [Python数据挖掘]第7章、航空公司客户价值分析

    一.背景和挖掘目标 二.分析方法与过程 客户价值识别最常用的是RFM模型(最近消费时间间隔Recency,消费频率Frequency,消费金额Monetary) 1.EDA(探索性数据分析) #对数据 ...

  6. 除了使用new关键字,还有什么方法可以创建Java对象呢?

    今天来盘点一下除了使用 "new" 关键字创建对象,还有什么方法可以创建Java对象呢? 因为是创建对象,所以这里ioc容器不在范围内 我们先看一下常用的new关键字创建 Clas ...

  7. python学习之——习题一

    习题一:使用while循环输入1 2 3 4 5 6   8 9 10 (不含7) 首先想到,先使用while循环打印出1-10数字,然后再将数字“7”剔除. # 先打印出1-10 n = 1 whi ...

  8. 什么时候使用“RCC_APBXPeriph_AFIO”

    什么时候需要开启复用时钟: (1)使用EXTI (2)重映射(用到外设的重映射功能时才需要使能AFIO的时钟) 举例:重映射USART2 USART2的TX/RX在PA.2/3.但是,PA.2已经被T ...

  9. tcp config

    $ sudo sysctl net.ipv4.tcp_reordering=1 $ sudo sysctl net.ipv4.tcp_thin_linear_timeouts=1 $ sudo sys ...

  10. http压测工具wrk使用

    安装 wrk支持大多数类UNIX系统,不支持windows.需要操作系统支持LuaJIT和OpenSSL,不过不用担心,大多数类Unix系统都支持.安装wrk非常简单,只要从github上下载wrk源 ...