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()方法, ...
随机推荐
- Django框架详细介绍---Form表单
一.概述 在HTML页面中,利用form表单向后端提交数据时,需要编写input等输入标签并用form标签包裹起来,与此同时,在很多应用场景之下需要对用户输入的数据校验,例如注册登录页面中,校验用户注 ...
- Ubuntu 自动选择最快的镜像源
通常情况下阿里云的镜像源(http://mirrors.aliyun.com/ubuntu/)用得比较多 但是也不排除因网络环境导致的某个镜像源访问慢问题 那么就可以配置为自动选择镜像源进行更新 修改 ...
- mongols的反向代理和负载均衡功能
mongols是C++ 服务器基础设施库,它最近更新提供了反向代理和负载均衡功能. 以下为用mongols代理两个nodejs后端(8888和8889)并与nginx压测对比图: 压测显示mongol ...
- Java基础语法-Unicode、UTF-8、UTF-16
1.Unicode(统一码.万国码),从名字里可以看出,unicode码表囊括世界上各国语言文字. unidode中包含17个代码级别,第一个代码级别又称作基本的多语言级别(码点从U+0000到U+F ...
- Linq组合查询与分页组合查询结合
1.组合查询 <div>姓名:<asp:TextBox ID="T1" runat="server"></asp:TextBox& ...
- ARMLCD屏调试2--ili9325驱动编写
2011-06-24 21:57:09 一,读id--完成 二,自己写了驱动--完成 三,调试LCD屏驱动--完成 一 读id,不过过程还有点曲折. 因为之前写命令写数据的时序是根据i ...
- 第十七节 Cookie基础与应用
什么是cookie:其实就是页面用来保存信息:比如,自动登录.记住用户名 cookie的特性:(以域名为单位的) 同一个网站(同一个域名)中所有页面共享一套cookie 数量.大小有限,跟浏览器有关, ...
- Leetcode 存在重复元素 (219,220)
219. 存在重复元素 II 给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k. / ...
- 手机app抓包
简介 爬虫是cs架构中的c端 原理是模拟浏览器向服务器发送请求 如果要爬取手机APP的数据,APP也是服务端与浏览器性质相同 我们只要获取到手机APP给服务器发送数据 并加以分析就能模拟它的请求 从而 ...
- 复旦高等代数 I(18级)每周一题
[问题2018A01] 计算下列 $n+1$ 阶行列式的值: $$|A|=\begin{vmatrix} 0 & 1 & 1 & \cdots & 1 \\ 1 &a ...