C# 对SQlServer访问的完整类
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Net;
using System.ServiceModel.Web;
using System.Text; namespace Common
{
public class DBHelper
{
private string m_dbs; /// <summary>
/// 构造函数
/// </summary>
public DBHelper() { } /// <summary>
/// 构造函数
/// </summary>
/// <param name="connectString">数据库连接字符串</param>
public DBHelper (string connectString)
{
m_dbs = connectString;
}
public string ConnectString
{
get { return m_dbs; }
set { m_dbs = value; }
} /// <summary>
/// 插入并获取ID
/// </summary>
/// <param name="connectString">数据库连接字符串</param>
/// <param name="commandStr">SQL语句 包含获取ID的命令</param>
/// <returns>新记录的ID</returns>
public int ExecuteScalarInsert(string connectString,string commandStr)
{
string err = "";
int ret = 0;
if(string.IsNullOrEmpty (connectString ))
{
return -1;
}
using (SqlConnection dbc = new SqlConnection(connectString))
{
SqlCommand insert = new SqlCommand(commandStr, dbc); try
{
dbc.Open();
ret = Convert.ToInt32(insert.ExecuteScalar());
}
catch(Exception ex)
{
err = ex.Message;
}
} if (err.Length > 0)
{
throw new WebFaultException<SimpleException>(new SimpleException() { Message = err }, HttpStatusCode.InternalServerError);
}
else
{
return ret;
}
} /// <summary>
/// 插入并获取ID
/// </summary>
/// <param name="commandStr">SQL语句 包含获取ID的命令</param>
/// <returns>新记录的ID</returns>
public int ExecuteScalarInsert(string commandStr)
{
string err = "";
int ret = 0;
if (string.IsNullOrEmpty(m_dbs ))
{
return -1;
}
using (SqlConnection dbc = new SqlConnection(m_dbs))
{
SqlCommand insert = new SqlCommand(commandStr, dbc); try
{
dbc.Open();
ret = Convert.ToInt32(insert.ExecuteScalar());
}
catch(Exception ex)
{
err = ex.Message;
}
} if (err.Length > 0)
{
throw new WebFaultException<SimpleException>(new SimpleException() { Message = err }, HttpStatusCode.InternalServerError);
}
else
{
return ret;
}
} /// <summary>
/// 添加、删除、更新操作
/// </summary>
/// <param name="connectString">数据库连接字符串</param>
/// <param name="commandstr">SQL语句</param>
/// <returns>受影响的行数</returns>
public int CommandExecuteNonQuery(string connectString, string commandstr)
{
if(string .IsNullOrEmpty (connectString)||string .IsNullOrEmpty (commandstr ))
{
return -1;
}
string err = "";
int result = 0;
using (SqlConnection dbc = new SqlConnection(connectString))
{
SqlCommand command = new SqlCommand(commandstr, dbc);
try
{
dbc.Open();
result = command.ExecuteNonQuery();
}
catch(Exception ex)
{
err = ex.Message;
}
} if (err.Length > 0)
{
throw new WebFaultException<SimpleException>(new SimpleException() { Message = err }, HttpStatusCode.InternalServerError);
}
else
{
return result;
} } /// <summary>
/// 添加、删除、更新操作
/// </summary>
/// <param name="commandstr">SQL语句</param>
/// <returns>受影响的行数</returns>
public int CommandExecuteNonQuery(string commandstr)
{
if (string.IsNullOrEmpty(m_dbs )||string .IsNullOrEmpty (commandstr ))
{
return -1;
}
string err = "";
int result = 0;
using (SqlConnection dbc = new SqlConnection(m_dbs))
{
SqlCommand command = new SqlCommand(commandstr, dbc);
try
{
dbc.Open();
result = command.ExecuteNonQuery();
}
catch (Exception ex)
{
err = ex.Message;
}
} if (err.Length > 0)
{
throw new WebFaultException<SimpleException>(new SimpleException() { Message = err }, HttpStatusCode.InternalServerError);
}
else
{
return result;
}
} /// <summary>
/// 执行查询
/// </summary>
/// <param name="connectString">数据库连接字符串</param>
/// <param name="selectstr">SQL语句</param>
/// <returns>数据表</returns>
public DataTable GetCommand(string connectString, string selectstr)
{
if(string .IsNullOrEmpty (connectString )||string .IsNullOrEmpty (selectstr ))
{
return null;
}
DataTable table = new DataTable(); string err = "";
using (SqlConnection dbc = new SqlConnection(connectString))
{
try
{
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(selectstr, dbc);
adapter.Fill(table);
}
catch(Exception ex)
{
err = ex.Message;
}
} if (err.Length > 0)
{
throw new WebFaultException<SimpleException>(new SimpleException() { Message = err }, HttpStatusCode.InternalServerError);
}
else
{
return table;
}
} /// <summary>
/// 执行查询
/// </summary>
/// <param name="selectstr">SQL语句</param>
/// <returns>数据表</returns>
public DataTable GetCommand(string selectstr)
{
if (string.IsNullOrEmpty(m_dbs))
{
return null;
}
DataTable table = new DataTable();
string err = "";
using (SqlConnection dbc = new SqlConnection(m_dbs))
{
try
{
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(selectstr, dbc);
adapter.Fill(table);
}
catch(Exception ex)
{
err = ex.Message;
}
} if (err.Length > 0)
{
throw new WebFaultException<SimpleException>(new SimpleException() { Message = err }, HttpStatusCode.InternalServerError);
}
else
{
return table;
}
} /// <summary>
/// 执行一个事务
/// </summary>
/// <param name="commands">事务中要执行的所有语句</param>
/// <returns>事务是否成功执行</returns>
public bool ExecuteTransaction(List <string >commands)
{
if(string .IsNullOrEmpty (m_dbs)||commands ==null )
{
return false;
} string err = "";
bool ret = false;
using (SqlConnection dbc = new SqlConnection(m_dbs))
{
dbc.Open();
using (SqlTransaction transaction = dbc.BeginTransaction())
{
try
{
foreach (string commandstr in commands)
{
SqlCommand command = new SqlCommand(commandstr, dbc);
command.Transaction = transaction;
command.ExecuteNonQuery();
}
transaction.Commit();
ret = true;
}
catch (Exception ex)
{
transaction.Rollback();
err = ex.Message;
}
}
} if (err.Length > 0)
{
throw new WebFaultException<SimpleException>(new SimpleException() { Message = err }, HttpStatusCode.InternalServerError);
}
else
{
return ret;
}
} /// <summary>
/// 执行一个事务
/// </summary>
/// <param name="connectString">数据库连接字符串</param>
/// <param name="commands">事务中要执行的所有语句</param>
/// <returns>事务是否成功执行</returns>
public bool ExecuteTransaction(string connectString,List<string> commands)
{
if (string.IsNullOrEmpty(connectString) || commands == null)
{
return false;
} string err = "";
bool ret = false;
using (SqlConnection dbc = new SqlConnection(connectString))
{
dbc.Open();
using (SqlTransaction transaction = dbc.BeginTransaction())
{
try
{
foreach (string commandstr in commands)
{
SqlCommand command = new SqlCommand(commandstr, dbc);
command.Transaction = transaction;
command.ExecuteNonQuery();
}
transaction.Commit();
ret = true;
}
catch (Exception ex)
{
transaction.Rollback();
err = ex.Message;
}
}
} if (err.Length > 0)
{
throw new WebFaultException<SimpleException>(new SimpleException() { Message = err }, HttpStatusCode.InternalServerError);
}
else
{
return ret;
}
}
}
}
这种类写了又写,故作记录。
C# 对SQlServer访问的完整类的更多相关文章
- 【转载】微软官方提供的Sqlserver数据库操作帮助类SQLHelper类
在.NET平台中,C#语言一般使用ADO.NET组件来操作Sqlserver数据库,通过ADO.NET组件可以实现连接数据库.查询数据集.执行SQL语句以及关闭数据库连接等操作,为此网上有很多开发者自 ...
- C#操作xml完整类文件
C#操作xml完整类文件 xml_oper.cs using ...System; using System.Data; using System.Web; using System.Xml; /** ...
- MFC一个类访问另一个类成员对象的成员变量值
MFC中一个类要访问另外一个类的的对象的成员变量值,这就需要获得原来那个类对象的指针,其实有好几种方法都可以实现. 比如维护一个单例模式.设置静态变量等等.我们这里举个列子,实现多个类之间的相互访问. ...
- winform中利用反射实现泛型数据访问对象基类(1)
考虑到软件使用在客户端,同时想简化代码的实现,就写了一个泛型的数据访问对象基类,并不是特别健全,按道理应该参数化的方式实现insert和update,暂未使用参数化,抽时间改进. /// <su ...
- C++ - 派生类访问模板基类(templatized base class)命名
派生类访问模板基类(templatized base class)命名 本文地址: http://blog.csdn.net/caroline_wendy/article/details/239936 ...
- SQLServer访问Oracle查询性能问题解决
原文:SQLServer访问Oracle查询性能问题解决 1. 问题 系统有个模块,需要查询Oracle数据库中的数据.目前是通过建立链接服务器实现的. SQLServer访问Oracle实现 可参考 ...
- 【JVM虚拟机】(6)---深入理解Class中访问标志、类索引、父类索引、接口索引
JVM(6)访问标志,类索引 上一篇博客讲[JVM虚拟机](5)---深入理解JVM-Class中常量池 我们知道一个class文件正常可以分为7个部分: 魔数与class文件版本 常量池 访问标志 ...
- PHP 获取当前访问的完整URL
代码如下: <?php // php 获取当前访问的完整url function GetCurUrl() { $url = 'http://'; if(isset($_SERVER['HTTPS ...
- 4.3.6 对象的界定通过编写接口来访问带这类命名结构的表会出问题。如前所述,SQL Server的灵活性不应用作编写错误代码或创建问题对象的借口。 注意在使用Management Studio的脚本工具时,SQL Server会界定所有的对象。这不是因为这么做是必须的,也不是编写代码的最佳方式,而是因为在界定符中封装所有的对象,比编写脚本引擎来查找需要界定的对象更容易。
如前所述,在创建对象时,最好避免使用内嵌的空格或保留字作为对象名,但设计人员可能并没有遵守这个最佳实践原则.例如,我当前使用的数据库中有一个审核表名为Transaction,但是Transaction ...
随机推荐
- Nacos源码分析-Distro协议概览
温馨提示: 本文内容基于个人学习Nacos 2.0.1版本代码总结而来,因个人理解差异,不保证完全正确.如有理解错误之处欢迎各位拍砖指正,相互学习:转载请注明出处. 什么是Distro协议 今天来分析 ...
- 手写系列-实现一个铂金段位的 React
一.前言 本文基于 https://pomb.us/build-your-own-react/ 实现简单版 React. 本文学习思路来自 卡颂-b站-React源码,你在第几层. 模拟的版本为 Re ...
- 手写Spring框架,是时候撸个AOP与Bean生命周期融合了!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 嘎小子,这片代码水太深你把握不住! 在电视剧<楚汉传奇>中有这么一段刘邦 ...
- win10实现倒计时锁屏,休眠
@ECHO OFF&SETLOCAL ENABLEDELAYEDEXPANSION SET /a s=10+1FOR /l %%i in (1,1,!s!) do ( SET /a s-=1 ...
- 用Nextcloud在树莓派上布置你的个人网盘“NAS”
用Nextcloud在树莓派上布置你的个人网盘"NAS" 这次用的是目前最新的 Raspbian Stretch 系统,基于 Debian 9. 软件程序是 Nextcloud 1 ...
- Mac终端美化(iterm2+zsh+oh-my-zsh+powerlevel10k)
iterm2+zsh+oh-my-zsh+powerlevel10k 一.下载iterm2 方式一:官网下载 https://iterm2.com/ 方式二:百度云下载 链接: https://pan ...
- 添加底部导航栏tabbar
效果图: 如果要添加底部导航栏,最少2个,最多5个. app.json { "pages": [ "pages/index/index", "page ...
- proteus8.1 pro 中文版安装破解教程
Proteus8 Pro是非常有名的EDA工具(仿真软件),从原理图布图.代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计.是唯一将电路仿真软件.PCB设计软 ...
- 开机时自动启动的AutoHotkey脚本
;;; 开机时自动启动的AutoHotkey脚本;; 此脚本修改时间 2019年06月18日20时48分;; 计时器创建代码段 ------------------------------------ ...
- 【爬虫系列】1. 无事,Python验证码识别入门
最近在导入某站数据(正经需求),看到他们的登录需要验证码, 本来并不想折腾的,然而Cookie有效期只有一天. 已经收到了几次夜间报警推送之后,实在忍不住. 得嘞,还是得研究下模拟登录. 于是,秃头了 ...