数据库层
来源:互联网 发布:windows上安装apache 编辑:程序博客网 时间:2024/04/30 02:43
1.打开数据库连接
private SqlConnection con; //创建连接对象 #region 打开数据库连接 /// <summary> /// 打开数据库连接. /// </summary> private void Open() { // 打开数据库连接 if (con == null) { con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConStr"].ToString()); } if (con.State == System.Data.ConnectionState.Closed) con.Open(); }
<connectionStrings><add name="ConStr" connectionString="Server=.;DataBase=db_SIS;UID=sa;PWD=123456"/></connectionStrings>
2.关闭数据库连接
/// <summary> /// 关闭数据库连接 /// </summary> public void Close() { if (con != null) con.Close(); }
3.传入参数并转化为SqlParameter类型
/// <summary> /// 转换参数 /// </summary> /// <param name="ParamName">存储过程名称或命令文本</param> /// <param name="DbType">参数类型</param> /// <param name="Size">参数大小</param> /// <param name="Value">参数值</param> /// <returns>新的Parameter对象</returns> public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value) { return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value); } /// <summary> /// 初始化参数值 /// </summary> /// <param name="ParamName">存储过程名称或命令文本</param> /// <param name="DbType">参数类型</param> /// <param name="Size">参数大小</param> /// <param name="Direction">参数方向</param> /// <param name="Value">参数值</param> /// <returns>新的 parameter 对象</returns> public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value) { SqlParameter param; if (Size > 0) param = new SqlParameter(ParamName, DbType, Size); else param = new SqlParameter(ParamName, DbType); param.Direction = Direction; if (!(Direction == ParameterDirection.Output && Value == null)) param.Value = Value; return param; }
4.创建SqlDataAdapter对象
/// <summary> /// 创建一个SqlDataAdapter对象以此来执行命令文本 /// </summary> /// <param name="procName">命令文本</param> /// <param name="prams">参数对象</param> /// <returns></returns> private SqlDataAdapter CreateDataAdaper(string procName, SqlParameter[] prams) { this.Open(); SqlDataAdapter dap = new SqlDataAdapter(procName, con); dap.SelectCommand.CommandType = CommandType.Text; //执行类型:命令文本 if (prams != null) { foreach (SqlParameter parameter in prams) dap.SelectCommand.Parameters.Add(parameter); } //加入返回参数 dap.SelectCommand.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null)); return dap; }
5.创建SqlCommand对象
/// <summary> /// 创建一个SqlCommand对象以此来执行命令文本 /// </summary> /// <param name="procName">命令文本</param> /// <param name="prams"命令文本所需参数</param> /// <returns>返回SqlCommand对象</returns> private SqlCommand CreateCommand(string procName, SqlParameter[] prams) { // 确认打开连接 this.Open(); SqlCommand cmd = new SqlCommand(procName, con); cmd.CommandType = CommandType.Text; //执行类型:命令文本 // 依次把参数传入命令文本 if (prams != null) { foreach (SqlParameter parameter in prams) cmd.Parameters.Add(parameter); } // 加入返回参数 cmd.Parameters.Add( new SqlParameter("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null)); return cmd; }
6.执行命令返回数据表
/// <summary> /// 执行查询命令文本,并且返回DataSet数据集 /// </summary> /// <param name="procName">命令文本</param> /// <param name="prams">参数对象</param> /// <param name="tbName">数据表名称</param> /// <returns></returns> public DataSet RunProcReturn(string procName, SqlParameter[] prams, string tbName) { SqlDataAdapter dap = CreateDataAdaper(procName, prams); DataSet ds = new DataSet(); dap.Fill(ds, tbName); this.Close(); //得到执行成功返回值 return ds; } /// <summary> /// 执行命令文本,并且返回DataSet数据集 /// </summary> /// <param name="procName">命令文本</param> /// <param name="tbName">数据表名称</param> /// <returns>DataSet</returns> public DataSet RunProcReturn(string procName, string tbName) { SqlDataAdapter dap = CreateDataAdaper(procName, null); DataSet ds = new DataSet(); dap.Fill(ds, tbName); this.Close(); //得到执行成功返回值 return ds; }
7.执行命令,返回成功执行的行数
/// <summary> /// 直接执行SQL语句 /// </summary> /// <param name="procName">命令文本</param> /// <returns></returns> public int RunProc(string procName) { this.Open(); SqlCommand cmd = new SqlCommand(procName, con); cmd.ExecuteNonQuery(); this.Close(); return 1; }
/// <summary> /// 执行命令 /// </summary> /// <param name="procName">命令文本</param> /// <param name="prams">参数对象</param> /// <returns></returns> public int RunProc(string procName, SqlParameter[] prams) { SqlCommand cmd = CreateCommand(procName, prams); cmd.ExecuteNonQuery(); this.Close(); //得到执行成功返回值 return (int)cmd.Parameters["ReturnValue"].Value; }
* prams在使用时为null,表示sql语句无参数。
- 数据库层
- 数据库层
- DbHelperSQL数据库类 数据库层
- 数据库层封装
- PHP数据库抽象层
- 数据库层封装
- 数据库升级层
- Model以及数据库层
- PDO数据库抽象层
- PDO数据库抽象层
- MYSQL数据库访问层
- 什么是数据库抽象层
- 数据库抽象层PDO
- PDO数据库抽象层
- Android数据库DB层
- 数据库抽象层PDO
- 数据库抽象层PDO
- 数据库访问层
- ios页面间传递参数四种方式
- 组合数递推模版
- 自己写代理服务器
- MFC dll注入框架
- 今天遇到了一个非常恶心的错误
- 数据库层
- configure编译中常见的错误
- C++学习书籍
- ZOJ 3478 SPFA
- 查找之杨氏矩阵
- 外企那些事儿
- Euclid's Game
- 黑马程序员-我的摘录-正则表达式总结-需要加强
- [Android]反编译工具:apktool、dex2jar、jd-gui使用简介