常用的数据访问底层类
来源:互联网 发布:三菱plc编程实例视频 编辑:程序博客网 时间:2024/06/06 21:07
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using System.Configuration;
/*
* 所属层次:数据访问类组件(数据操作)
*/
namespace DBUtility
{
/// <summary>
/// SqlHelper类用于操作数据库(可升级,扩展) 抽象类+静态方法。
/// </summary>
public abstract class SqlHelper
{
//数据库连接字符串
//连接字符串在界面层的...的配置文件中。
//public static readonly string ConnectionStringSqlServer = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;
/// <summary>
/// 给定连接的数据库用假设参数执行一个sql命令(不返回数据集)
/// </summary>
/// <param name="connectionString">一个有效的连接字符串</param>
/// <param name="commandType">命令类型(存储过程, 文本, 等等)</param>
/// <param name="commandText">存储过程名称或者sql命令语句</param>
/// <param name="commandParameters">执行命令所用参数的集合</param>
/// <returns>执行命令所影响的行数</returns>
public static int ExecuteNonQuery( CommandType cmdType, string cmdText, SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(connectionString))
{
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.CommandType = cmdType;
if (cmd.Parameters != null)
{
cmd.Parameters.Clear();
}
if (commandParameters != null)
{
foreach (SqlParameter parm in commandParameters)
cmd.Parameters.Add(parm);
}
try
{
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
catch
{
//关闭连接,抛出异常
conn.Close();
throw;
}
finally
{
conn.Close();
}
}
}
/// <summary>
/// 执行存储过程,返回一个输出参数
/// </summary>
/// <param name="connectionString">一个有效的连接字符串</param>
/// <param name="cmdText">存储过程名称</param>
/// <param name="commandParameters">执行命令所用参数的集合</param>
/// <returns>输出参数</returns>
public static object ExecuteProcGetOutput( string cmdText, string outputParaName, SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(connectionString))
{
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.CommandType = CommandType.StoredProcedure;
if (commandParameters != null)
{
foreach (SqlParameter parm in commandParameters)
cmd.Parameters.Add(parm);
}
try
{
cmd.ExecuteNonQuery();
object val = cmd.Parameters[outputParaName].Value;
cmd.Parameters.Clear();
return val;
}
catch
{
//关闭连接,抛出异常
conn.Close();
throw;
}
}
}
/// <summary>
/// 用执行的数据库连接执行一个返回数据集的sql命令
/// </summary>
/// <param name="connectionString">一个有效的连接字符串</param>
/// <param name="commandType">命令类型(存储过程, 文本, 等等)</param>
/// <param name="commandText">存储过程名称或者sql命令语句</param>
/// <param name="commandParameters">执行命令所用参数的集合</param>
/// <returns>包含结果的读取器</returns>
public static SqlDataReader ExecuteReader( CommandType cmdType, string cmdText, SqlParameter[] commandParameters)
{
//创建一个SqlCommand对象
SqlCommand cmd = new SqlCommand();
//创建一个SqlConnection对象
SqlConnection conn = new SqlConnection(connectionString);
//不能使用using 因为要返回SqlDataReader,否则外面的SqlDataReader不能使用。
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.CommandType = cmdType;
if (commandParameters != null)
{
foreach (SqlParameter parm in commandParameters)
cmd.Parameters.Add(parm);
}
try
{
//调用 SqlCommand 的 ExecuteReader 方法
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
//清除参数
cmd.Parameters.Clear();
return reader;
}
catch
{
conn.Close();
throw;
}
}
/// <summary>
/// 用执行的数据库连接执行一个返回一张表命令
/// </summary>
/// <param name="connectionString">一个有效的连接字符串</param>
/// <param name="commandText">存储过程名称或者sql命令语句</param>
/// <param name="commandParameters">执行命令所用参数的集合</param>
/// <returns>包含结果的读取器</returns>
public static DataTable ExectuteDataTable(string cmdText, SqlParameter[] commandParameters)
{
//创建一个SqlConnection对象
SqlConnection conn = new SqlConnection(connectionString);
//创建一个SqlDataAdapter对象
SqlDataAdapter sda = new SqlDataAdapter(cmdText,conn);
if (commandParameters != null)
{
foreach (SqlParameter parm in commandParameters)
sda.SelectCommand.Parameters.Add(parm);
}
try
{
//调用 SqlCommand 的 ExecuteReader 方法
DataTable dt = new DataTable();
sda.Fill(dt);
//清除参数
sda.SelectCommand.Parameters.Clear();
return dt;
}
catch
{
conn.Close();
throw;
}
}
}
}
- 常用的数据访问底层类
- 数据的底层存储
- 几种常用数据访问的关系
- HBase数据访问的一些常用方式
- 常用集合的底层数据结构
- 数据访问常用方法
- List接口常用实现类的特点和底层实现
- 完美的数据爬虫底层
- 如何访问SQL Server底层的机制
- 计算机底层是如何访问显卡的?
- 计算机底层是如何访问显卡的?
- 计算机底层是如何访问显卡的?
- 应用程序访问底层的方法及注意事项
- 计算机底层是如何访问显卡的?
- C#对底层数据操作的通用类
- C#对底层数据操作的通用类
- opencv里常用的访问图像像素数据方法
- 数据访问层常用操作的JPA实现
- 函数的汇编代码!!!!(及其函数形参传入方式、函数内部的局部变量存储方式)
- 2008鼠年的答卷及2009牛年的题目
- 乱点iPod
- 汇编指令一览表!!!
- eclipse中集成单独的ant版本
- 常用的数据访问底层类
- Linux环境下有关网络的一些配置
- Windows 2000 vs XP/2003 测试小记
- mercurial安装使用
- Sys和system用户、sysdba 和sysoper系统权限、dba角色的区别(转载)
- C programing
- LED or LCD
- C#打开关闭窗体事件顺序
- 要学的东东很多.....