C#操作SQLServer2012类
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类的更多相关文章
- XML格式示例 与 XML操作(读取)类封装
header('Content-Type: text/xml'); <?xml version="1.0" encoding="utf-8" standa ...
- 简洁的PHP操作SQLite类
SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了. ...
- C#工具类:Json操作帮助类(转载)
原文转载自C#工具类:Json操作帮助类_IT技术小趣屋. Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来 ...
- 【转载】C#工具类:Json操作帮助类
Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来简化相应的操作,该工具类中包含以下功能:对象转JSON.数据 ...
- 【转载】微软官方提供的Sqlserver数据库操作帮助类SQLHelper类
在.NET平台中,C#语言一般使用ADO.NET组件来操作Sqlserver数据库,通过ADO.NET组件可以实现连接数据库.查询数据集.执行SQL语句以及关闭数据库连接等操作,为此网上有很多开发者自 ...
- oracleHelper 操作帮助类
using System; using System.Configuration; using System.Data; using System.Collections; using Oracle. ...
- Java反射机制demo(六)—获得并操作一个类的属性
Java反射机制demo(六)—获得并操作一个类的属性 获得并操作一个类的属性?! 不可思议啊,一个类的属性一般都是私有成员变量啊,private修饰符啊! 但是毫无疑问,这些东西在Java的反射机制 ...
- 第三百零七节,Django框架,models.py模块,数据库操作——表类容的增删改查
Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...
- 五 Django框架,models.py模块,数据库操作——表类容的增删改查
Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...
随机推荐
- 读HashMap 源码(jdk11)的见解
如果想系统详细的了解HashMap请移步各大佬博客.这篇文章只是个人的一些见解. 数组+链表 或 数组+红黑树.这种说法感觉有迷惑性. 之前看博客都说 HashMap 的存储是数组+链表(jdk6), ...
- CCF CSP 201612-1 中间数
题目链接:http://118.190.20.162/view.page?gpid=T52 问题描述 试题编号: 201612-1 试题名称: 中间数 时间限制: 1.0s 内存限制: 256.0MB ...
- package.json的配置理解
一.初步理解 1. npm安装package.json时 直接转到当前项目目录下用命令npm install 或npm install --save-dev安装即可,自动将package.json中 ...
- setInterval中this
今天使用react做钟表,自然用到了setInterval,但是出现this指向不明的问题. <html> <head> <meta charset="UTF- ...
- kube-liveboard: kubernetes集群可视化工具
kube-liveboard 随着kubernetes 集群的增大,对于集群数据选取恰当的形式进行展示有助于直观反映集群的状态,方便发现集群的短板,了解集群的瓶颈.因此,笔者做了kube-livebo ...
- 前向传播算法(Forward propagation)与反向传播算法(Back propagation)
虽然学深度学习有一段时间了,但是对于一些算法的具体实现还是模糊不清,用了很久也不是很了解.因此特意先对深度学习中的相关基础概念做一下总结.先看看前向传播算法(Forward propagation)与 ...
- iOS绘制坐标图,折线图-Swift
坐标图,经常会在各种各样的App中使用,最常用的一种坐标图就是折线图,根据给定的点绘制出对应的坐标图是最基本的需求.由于本人的项目需要使用折线图,第一反应就是搜索已经存在的解决方案,因为这种需求应该很 ...
- main函数的的两个参数
C语言中main函数的参数有两个,这两个参数写为argc和argv.因此,main函数的函数头可写为:main(argc,argv);C语言还规定argc(第一个形参)必须是整型变量,argv( 第二 ...
- LGOJ P3919【模板】可持久化数组(可持久化线段树/平衡树)
代码 //可持久化线段树 #include <cstdio> using namespace std; struct node { node *Lnode,*Rnode; int val; ...
- 【FJOI 20170305】省选模拟赛
题面被改成了个猪... T1猪猪划船(boat) [题目描述] 6只可爱的猪猪们一起旅游,其中有3只大猪A,B,C,他们的孩子为3只小猪a,b,c.由于猪猪们十分凶残,如果小猪在没有父母监护的情况下, ...