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访问的完整类的更多相关文章

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

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

  2. C#操作xml完整类文件

    C#操作xml完整类文件 xml_oper.cs using ...System; using System.Data; using System.Web; using System.Xml; /** ...

  3. MFC一个类访问另一个类成员对象的成员变量值

    MFC中一个类要访问另外一个类的的对象的成员变量值,这就需要获得原来那个类对象的指针,其实有好几种方法都可以实现. 比如维护一个单例模式.设置静态变量等等.我们这里举个列子,实现多个类之间的相互访问. ...

  4. winform中利用反射实现泛型数据访问对象基类(1)

    考虑到软件使用在客户端,同时想简化代码的实现,就写了一个泛型的数据访问对象基类,并不是特别健全,按道理应该参数化的方式实现insert和update,暂未使用参数化,抽时间改进. /// <su ...

  5. C++ - 派生类访问模板基类(templatized base class)命名

    派生类访问模板基类(templatized base class)命名 本文地址: http://blog.csdn.net/caroline_wendy/article/details/239936 ...

  6. SQLServer访问Oracle查询性能问题解决

    原文:SQLServer访问Oracle查询性能问题解决 1. 问题 系统有个模块,需要查询Oracle数据库中的数据.目前是通过建立链接服务器实现的. SQLServer访问Oracle实现 可参考 ...

  7. 【JVM虚拟机】(6)---深入理解Class中访问标志、类索引、父类索引、接口索引

    JVM(6)访问标志,类索引 上一篇博客讲[JVM虚拟机](5)---深入理解JVM-Class中常量池 我们知道一个class文件正常可以分为7个部分: 魔数与class文件版本 常量池 访问标志 ...

  8. PHP 获取当前访问的完整URL

    代码如下: <?php // php 获取当前访问的完整url function GetCurUrl() { $url = 'http://'; if(isset($_SERVER['HTTPS ...

  9. 4.3.6 对象的界定通过编写接口来访问带这类命名结构的表会出问题。如前所述,SQL Server的灵活性不应用作编写错误代码或创建问题对象的借口。 注意在使用Management Studio的脚本工具时,SQL Server会界定所有的对象。这不是因为这么做是必须的,也不是编写代码的最佳方式,而是因为在界定符中封装所有的对象,比编写脚本引擎来查找需要界定的对象更容易。

    如前所述,在创建对象时,最好避免使用内嵌的空格或保留字作为对象名,但设计人员可能并没有遵守这个最佳实践原则.例如,我当前使用的数据库中有一个审核表名为Transaction,但是Transaction ...

随机推荐

  1. C语言:字符编码

    C语言是 70 年代的产物,那个时候只有 ASCII,各个国家的字符编码都还未成熟,所以C语言不可能从底层支持 GB2312.GBK.Big5.Shift-JIS 等国家编码,也不可能支持 Unico ...

  2. python 实时监控剪切板,并替换其中的部分内容,重新写入剪切板

    #实时监控剪贴板内容的变化,并替换其中的回车,换行,逗号,再写入剪切板,以供使用. import pyperclip import time last_string = pyperclip.paste ...

  3. Redis主从复制那点事

    ​     我们在 Redis持久化机制你学会了吗?学习了AOF和RDB,如果Redis宕机,他们分别通过回放日志和重新读入RDB文件的方式恢复数据,从而提高可靠性.我们今天来想这么一个问题,假如我们 ...

  4. java高级编程笔记(四)

    java的Object类: 1.Object 类位于 java.lang 包中,编译时会自动导入:Java 的所有类都继承了 Object,子类可以使用 Object 的所有方法. 2.Object ...

  5. Linux下Nginx基础应用

    Nginx简介: Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.其将源代码以类BSD许可证的形式发布,因 ...

  6. 记intouch SMC local下驱动丢失问题解决

    最近项目中,维护发现Intouch 2014R2版本下,有一台上位机SMC下local安装的Dassdirect和dasmbtcp驱动都丢失了,无法查看.但不影响程序的正常使用,遂进行相应的寻求帮助, ...

  7. ETL数仓测试

    前言 datalake架构 离线数据 ODS -> DW -> DM https://www.jianshu.com/p/72e395d8cb33 https://www.cnblogs. ...

  8. pointnet.pytorch代码解析

    pointnet.pytorch代码解析 代码运行 Training cd utils python train_classification.py --dataset <dataset pat ...

  9. Mol Cell | 张令强/贺福初/魏文毅/刘翠华揭示线性泛素化调控血管生成新机制

    景杰学术 | 报道 泛素化修饰作为主要的蛋白质翻译后修饰之一,与细胞周期.应激反应.信号传导和DNA损伤修复等几乎所有的生命活动密切相关[1].泛素分子通常含有7个赖氨酸残基,通过这些残基可以和其他泛 ...

  10. 作为Java开发工程师,如何高效优雅地编写接口文档

    作为一名优秀的Java开发工程师,编写接口文档向来是一件很头疼的事情.本来就被bug纠缠的很累了,你还让我干这? 其实,你可以试试ApiPost. ApiPost的定位是Postman+Swagger ...