操作SQL Server的帮助类
可作为以后开发的参考代码,也可以再整理下,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Configuration; using System.Windows.Forms; namespace test1
{
class DataBase
{
private static string connString;
private static SqlConnection Conn;
//获取连接数据库字符串
public static String GetConnString()
{
string connString = "chaiqianD2.Properties.Settings.testConnectionString";
String s = ConfigurationManager.ConnectionStrings[connString].ConnectionString;
return s;
} /**////<summary>
///创建connnection并打开
/// </summary>
public static void Open()
{
GetConnString();
connString = GetConnString();
Conn = new SqlConnection();
Conn.ConnectionString = connString;
try
{
Conn.Open();
}
catch (SqlException ee)
{
MessageBox.Show(ee.Message.ToString() + ee.ToString());
}
} /**////<summary>
///获取connnection
/// </summary>
public static SqlConnection getConnection()
{
Open();
return Conn;
} //执行查询,返回受影响的行数
public static int ExecuteSQL(string cmdString)
{
Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = cmdString;
cmd.Connection = Conn;
cmd.CommandType = System.Data.CommandType.Text;
//返回数据库操作影响的行数
int nAffected = -;
try
{
nAffected = cmd.ExecuteNonQuery();
}
catch (SqlException sqlEx)
{
MessageBox.Show(sqlEx.Message.ToString());
throw sqlEx;
}
finally
{
Conn.Close();
}
return nAffected;
} //返回第一行第一列的数据
public static int ExecuteScalar(string cmdString)
{
Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = cmdString;
cmd.Connection = Conn;
cmd.CommandType = System.Data.CommandType.Text;
//返回数据库操作影响的行数
int count = ;
try
{
count = Int32.Parse(cmd.ExecuteScalar().ToString().Trim());
}
catch (SqlException ee)
{
Conn.Close();
MessageBox.Show(ee.Message.ToString());
count = -; }
finally
{
Conn.Close();
}
return count;
} //关闭连接
public static void Close()
{
if (Conn.State == ConnectionState.Open)
Conn.Close();
} //根据查询语句和在数据集中表的名字,返回DataSet
public static DataSet GetDataSet(String cmdString, String strTableName)
{
Open();
SqlCommand cmd = new SqlCommand(cmdString, Conn);
SqlDataAdapter myAd = new SqlDataAdapter();
myAd.SelectCommand = new SqlCommand(cmdString, Conn); DataSet myDs = new DataSet();
//填充数据
try
{
myAd.Fill(myDs, strTableName);
return myDs;
}
catch (SqlException sqlEx)
{ MessageBox.Show(sqlEx.Message.ToString());
throw sqlEx;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
throw ex;
}
finally
{
Close();
} } //返回datareader
public static SqlDataReader GetDataReader(string CmdStr)
{
Open();
SqlCommand myCmd = new SqlCommand();
myCmd.Connection = Conn;
myCmd.CommandType = CommandType.Text;
myCmd.CommandText = CmdStr;
SqlDataReader myDr = null;
try
{
//数据读取器关闭时,连接对象自动关闭
myDr = myCmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (SqlException sqlEx)
{
Close();
if (myDr != null)
myDr.Close();
throw sqlEx;
}
return myDr;
} //执行存储过程的函数
public static int ExecuteStoredProcedure(string StoredProcedureStr, SqlParameter[] parameters)
{
Open(); using (SqlCommand cmd = new SqlCommand(StoredProcedureStr, Conn))
{
try
{
if (Conn.State != ConnectionState.Open)
{
Conn.Open();
}
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
cmd.CommandType = CommandType.StoredProcedure;
int rows = cmd.ExecuteNonQuery();
Close();
return rows;
}
catch (SqlException E)
{
MessageBox.Show(E.Message.ToString());
throw E;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
return -; }
finally
{
Close();
} } } //
public static int ExecuteNonQuery(string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
} //
private static void PrepareCommand(SqlCommand cmd, string cmdText, SqlParameter[] cmdParms)
{
Open();
cmd.Connection = Conn;
cmd.CommandText = cmdText;
cmd.CommandType = CommandType.Text; if (cmdParms != null)
{
foreach (SqlParameter parm in cmdParms)
cmd.Parameters.Add(parm);
}
} public static SqlDataReader ExecuteReader(string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
try
{
PrepareCommand(cmd, cmdText, commandParameters);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch (SqlException ee)
{
Close();
MessageBox.Show(ee.Message.ToString());
return null;
}
} /**//// <summary>
/// 执行存储过程,返回DataSet对象
/// </summary>
/// <param name="SQLString">查询语句</param>
/// <returns>DataSet</returns>
public static DataSet Query(string StoredProcedureStr, SqlParameter[] parameters, string tableName){
Open();
DataSet ds = new DataSet();
try
{
if (Conn.State != ConnectionState.Open)
Conn.Open();
SqlDataAdapter command = new SqlDataAdapter(StoredProcedureStr, Conn);
command.SelectCommand.CommandType = CommandType.StoredProcedure;
foreach (SqlParameter parameter in parameters)
{
command.SelectCommand.Parameters.Add(parameter);
}
command.Fill(ds, tableName);
Close(); }
catch (System.Data.SqlClient.SqlException ex)
{
MessageBox.Show(ex.Message.ToString() + ex.Number);
throw ex;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
Close();
}
return ds;
} //执行存储过程,返回多个表的结果集
public static DataSet Query(string StoredProcedureStr, SqlParameter[] parameters)
{
Open();
DataSet ds = new DataSet();
try
{
if (Conn.State != ConnectionState.Open)
Conn.Open();
SqlDataAdapter command = new SqlDataAdapter(StoredProcedureStr, Conn);
command.SelectCommand.CommandType = CommandType.StoredProcedure;
foreach (SqlParameter parameter in parameters)
{
command.SelectCommand.Parameters.Add(parameter);
}
command.Fill(ds);
Close(); }
catch (System.Data.SqlClient.SqlException ex)
{
MessageBox.Show(ex.Message.ToString() + ex.Number);
throw ex;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
Close();
}
return ds;
} //
public static void ShowSqlException(SqlException ex)
{
if (ex == null)
return;
// uses SQLServer 2000 ErrorCodes
switch (ex.Number)
{
case :
// SQL Server does not exist or access denied.
case :
// Invalid Database
case :
// Login Failed
break;
case :
MessageBox.Show("外键约束!");
// ForeignKey Violation
break;
case :
// DeadLock Victim
break;
case :
MessageBox.Show("违反约束,插入重复值!");
break;
case :
MessageBox.Show("违反唯一约束,插入重复值!");
// Unique Index/Constriant Violation
break;
default:
// throw a general DAL Exception
break;
}
}
}
}
操作SQL Server的帮助类的更多相关文章
- SQL Server学习之路(七):Python3操作SQL Server数据库
0.目录 1.前言 2.准备工作 3.简单测试语句 4.提交与回滚 5.封装成类的写法 1.前言 前面学完了SQL Server的基本语法,接下来学习如何在程序中使用sql,毕竟不能在程序中使用的话, ...
- [转]C#操作SQL Server数据库
转自:C#操作SQL Server数据库 1.概述 ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤: 第一,使用SqlConnection对象连接数据库: 第二,建立SqlComman ...
- 数据库SQL Server2012笔记(七)——java 程序操作sql server
1.crud(增删改查)介绍:create/retrieve/update/delete 2.JDBC介绍 1)JDBC(java database connectivity,java数据库连接) 2 ...
- PHP操作SQL Server 2008/2012
PHP操作SQL Server驱动,微软官方提供2个版本,Version 2.0 和 Version 3.0 Version 2.0 版本支持的操作系统有: Windows Server 2003 S ...
- 使用php来访问操作sql server
使用php来访问操作sql server 在此分成三步走: 第一部:查看配置,下载文件 首先查看自己的php和sql server版本 Php文件输入echo PHP_VERSION 运行脚本就可以 ...
- Nodejs 操作 Sql Server
Nodejs 操作 Sql Server Intro 最近项目需要爬取一些数据,数据有加密,前端的js又被混淆了,ajax请求被 hook 了,有些复杂,最后打算使用 puppeteer 来爬取数据. ...
- Python 学习笔记:Python 操作 SQL Server 数据库
最近要将数据写到数据库里,学习了一下如何用 Python 来操作 SQL Server 数据库. 一.连接数据库: 首先,我们要连接 SQL Server 数据库,需要安装 pymssql 这个第三方 ...
- ORM之Dapper操作Sql Server和MySql数据库
1.为什么选择Dapper 1)轻量. 2)速度快.Dapper的速度接近与IDataReader,取列表的数据超过了DataTable. 3)支持多种数据库.Dapper可以在所有Ado.net P ...
- 基于Spring Boot,使用JPA操作Sql Server数据库完成CRUD
完成一个RESTful服务,提供几个访问接口,用来操作较简单的联系人信息,数据保存在Sql Server数据库中. 1.使用STS创建工程. 使用STS创建RESTful工程,可以参考: <用S ...
随机推荐
- Unity下XLua方案的各值类型GC优化深度剖析
转自:http://gad.qq.com/article/detail/25645 前言 Unity下的C#GC Alloc(下面简称gc)是个大问题,而嵌入一个动态类型的Lua后,它们之间的交互很容 ...
- LG1155 双栈排序
题意 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈\(S_1\)和\(S_2\),Tom希望借助以下4种操作实现将输入序列升序排序. 操作a 如果输入序列不为空,将第一个元素压入栈\(S_ ...
- Msys2+mingw-w64 编译VS2013使用的ffmpeg静态库注意事项
1.环境准备 第一步:从http://sourceforge.net/projects/msys2/下载msys2的安装程序安装msys2; 第二步:通过msys2的包管理工具pacman安装ming ...
- centos7 yum 安装mysql
介绍在CentOS7上yum安装数据库服务器MySQL Community Server 5.7的方法. 准备 CentOS7默认安装了和MySQL有兼容性的MariaDB数据库,在我们安装MySQL ...
- 30个让人兴奋的视差滚动(Parallax Scrolling)效果网站--转
视差滚动(Parallax Scrolling)是指让多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验.作为今年网页设计的热点趋势,越来越多的网站应用了这项技术.今天这篇文章就与大 ...
- [转]java中byte转换int时为何与0xff进行与运算
在剖析该问题前请看如下代码public static String bytes2HexString(byte[] b) { String ret = ""; for (int ...
- javascript数组的申明方式以及常用方法
数组的定义: 方法1. var mycars=new Array()mycars[0]="Saab"mycars[1]="Volvo"mycars[2]=&qu ...
- MongoDB day01
MongoDB芒果数据库 数据存储阶段 文件管理阶段(.txt .doc .xlc) 优点:数据可以长期保存:数据有一定格式化规范:可以大量存储:使用简单方便 缺点:数据一致性差:用户查找修改不方便: ...
- Python basic (from learn python the hard the way)
1. How to run the python file? python ...py 2. UTF-8 is a character encoding, just like ASCII. 3. ro ...
- 分类和逻辑回归(Classification and logistic regression)
分类问题和线性回归问题问题很像,只是在分类问题中,我们预测的y值包含在一个小的离散数据集里.首先,认识一下二元分类(binary classification),在二元分类中,y的取值只能是0和1.例 ...