实例介绍
【实例截图】
【核心代码】
using System;
using System.ComponentModel;
using System.Collections;
using System.Diagnostics;
using System.Data;
using System.Configuration;
using System.Data.OleDb;
using System.Web;
namespace DB
{
/// <summary>
/// 通用的数据库处理类,通过ado.net与数据库连接
/// </summary>
///
[Obsolete]
public class Database : IDisposable
{
// 连接数据源
//public static string dbName=""; //数据库名
private static OleDbConnection con=null;
public static OleDbDataAdapter oda;
public string GetDefaultValue(string key)
{
OleDbDataReader dr = RunQuery("select statename from userstate where statetype='" key "'");
if (dr.Read()) return dr[0].ToString();
return null;
}
public OleDbDataAdapter getAdapter() {
Open();
OleDbDataAdapter adapter = new OleDbDataAdapter();
return adapter;
}
public static OleDbDataAdapter getAdapter(string query)
{
Open();
OleDbCommand selectCmd = new OleDbCommand(query, con);
selectCmd.Transaction = null;
OleDbDataAdapter adapter = new OleDbDataAdapter(selectCmd);
OleDbCommandBuilder scb = new OleDbCommandBuilder(adapter);//自动产生各种命令
return adapter;
}
public static OleDbDataAdapter getAdapter(string query, OleDbParameter[] prams)
{
Open();
OleDbCommand selectCmd = new OleDbCommand(query, con);
OleDbDataAdapter adapter = new OleDbDataAdapter(selectCmd);
OleDbCommandBuilder scb = new OleDbCommandBuilder(adapter);//自动产生各种命令
return adapter;
}
public static DataTable getDataTable(string query, OleDbParameter[] prams)
{
OleDbDataAdapter ad = getAdapter(query);
oda = ad;
if (prams != null)
{
foreach (OleDbParameter pra in prams)
{
ad.SelectCommand.CommandType = CommandType.StoredProcedure;
ad.SelectCommand.Parameters.Add(pra);
}
}
DataTable dt = new DataTable();
ad.Fill(dt);
return dt;
}
public static DataTable getDataTable(string query)
{
OleDbDataAdapter ad = getAdapter(query);
oda = ad;
DataTable dt = new DataTable();
//log.Info(dt.Rows[0][0].ToString());
ad.Fill(dt);
return dt;
}
public static OleDbDataReader getDataReader(string query)
{
OleDbCommand cd = getCommand(query);
OleDbDataReader dr = cd.ExecuteReader();
return dr;
}
public void updateDataTable(DataSet dataset, string tablename)
{
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = CreateCommand("select * from " tablename);
adapter.Update(dataset, tablename);
}
/// <summary>
/// 执行查询
/// </summary>
/// <param name="procName">查询语句</param>
/// <param name="dataReader">返回存储过程返回值</param>
public static OleDbDataReader RunQuery(string OleDb)
{
return RunQuery(OleDb, null);
}
public static OleDbDataReader RunQuery(string OleDb, OleDbParameter[] prams)
{
OleDbCommand cmd;
if (prams == null)
cmd = CreateCommand(OleDb);
else cmd = CreateCommand(OleDb, prams);
//cmd.CommandType=CommandType.Text;
return cmd.ExecuteReader();
//return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); //连接随reader关闭而关闭
//return (int)cmd.Parameters["ReturnValue"].Value;
}
/// <summary>
/// 执行返回表的存储过程,不带参数
/// </summary>
/// <param name="OleDb"></param>
/// <returns></returns>
public static DataTable RunTableProc(string OleDb)
{
return RunTableProc(OleDb, null);
}
/// <summary>
/// 执行返回表的存储过程,带参数
/// </summary>
/// <param name="OleDb"></param>
/// <param name="prams"></param>
/// <returns></returns>
public static DataTable RunTableProc(string OleDb, OleDbParameter[] prams)
{
OleDbDataAdapter oda=getAdapter(OleDb);
if(prams!=null)
{
foreach (OleDbParameter pram in prams)
{
oda.SelectCommand.Parameters.Add(pram);
}
}
oda.SelectCommand.CommandType = CommandType.StoredProcedure;
DataTable table = new DataTable();
oda.Fill(table);
return table;
}
/// <summary>
/// 执行返回值的存储过程
/// </summary>
/// <param name="OleDb"></param>
/// <param name="prams"></param>
/// <returns></returns>
///
public static object RunObjProc(string OleDb)
{
return RunObjProc(OleDb, null);
}
/// <summary>
/// 执行返回值的存储过程
/// </summary>
/// <param name="OleDb"></param>
/// <param name="prams"></param>
/// <returns></returns>
///
public static object RunObjProc(string OleDb, OleDbParameter[] prams)
{
OleDbCommand oda = getCommand(OleDb);
OleDbCommand cmd;
if (prams == null)
cmd = CreateCommand(OleDb);
else
cmd = CreateCommand(OleDb, prams);
cmd.ExecuteNonQuery();
object obj = cmd.Parameters["ReturnValue"].Value;
return obj;
}
/// <summary>
/// 执行非查询语句
/// </summary>
/// <param name="procName">非查询语句</param>
/// <param name="dataReader">返回非查询语句返回值</param>
public static int RunNoneQuery(string OleDb)
{
return RunNoneQuery(OleDb, null);
/*
OleDbCommand cmd = CreateCommand(OleDb);
return cmd.ExecuteNonQuery();*/
}
public static int RunNoneQuery(string OleDb, OleDbParameter[] prams)
{
OleDbCommand cmd;
if (prams != null) cmd = CreateCommand(OleDb, prams);
else cmd = CreateCommand(OleDb);
int ret = cmd.ExecuteNonQuery();
return ret;
}
public static OleDbCommand getCommand(string query)
{
Open();
OleDbCommand cmd = new OleDbCommand(query, con);
return cmd;
}
/// <summary>
/// 创建一个OleDbCommand对象以此来执行存储过程
/// </summary>
/// <param name="procName">存储过程的名称</param>
/// <param name="prams">存储过程所需参数</param>
/// <returns>返回OleDbCommand对象</returns>
private static OleDbCommand CreateCommand(string procName, OleDbParameter[] prams)
{
OleDbCommand cmd = CreateCommand();
cmd.CommandText = procName;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Clear();
// 依次把参数传入存储过程
if (prams != null)
{
foreach (OleDbParameter parameter in prams)
cmd.Parameters.Add(parameter);
}
// 加入返回参数
//cmd.Parameters.Add(
// new OleDbParameter("ReturnValue", OleDbType.Integer, 4,
// ParameterDirection.ReturnValue, false, 0, 0,
// string.Empty, DataRowVersion.Default, null));
return cmd;
}
private static OleDbCommand CreateCommand()
{
// 确认打开连接
Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
return cmd;
}
private static OleDbCommand CreateCommand(String OleDb)
{
OleDbCommand cmd = CreateCommand();
cmd.CommandText = OleDb;
return cmd;
}
/// <summary>
/// 打开数据库连接.
/// </summary>
public static void Open()
{
// 打开数据库连接
if (con == null)
{
//if (dbName == "")
// return;
string dbName = System.Configuration.ConfigurationSettings.AppSettings["DBName"].ToString();
string s = System.Configuration.ConfigurationSettings.AppSettings["constring"].ToString();
s = s.Replace("####", dbName); //动态赋值数据库名
//string s = "Provider=SQLOLEDB;server=127.0.0.1;database=Test;User Id=lwl;pwd=890914;";
con = new OleDbConnection(s);
//加入延迟时间
}
if (con.State == System.Data.ConnectionState.Closed)
{
con.Open();
}
}
public static OleDbConnection getConnection()
{
Open();
return con;
}
/// <summary>
/// 关闭数据库连接
/// </summary>
public static void Close()
{
try
{
if (con != null)
con.Close();
}
catch
{
}
}
/// <summary>
/// 释放资源
/// </summary>
public void Dispose()
{
// 确认连接是否已经关闭
if (con != null)
{
con.Dispose();
con = null;
}
}
/// <summary>
/// 传入输入参数
/// </summary>
/// <param name="ParamName">存储过程名称</param>
/// <param name="DbType">参数类型</param></param>
/// <param name="Size">参数大小</param>
/// <param name="Value">参数值</param>
/// <returns>新的 parameter 对象</returns>
public static OleDbParameter MakeInParam(string ParamName, OleDbType 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>
/// <returns>新的 parameter 对象</returns>
public static OleDbParameter MakeOutParam(string ParamName, OleDbType DbType, int Size)
{
return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);
}
/// <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 static OleDbParameter MakeParam(string ParamName, OleDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
{
OleDbParameter param;
if (Size > 0)
param = new OleDbParameter(ParamName, DbType, Size);
else
param = new OleDbParameter(ParamName, DbType);
param.Direction = Direction;
if (!(Direction == ParameterDirection.Output && Value == null))
param.Value = Value;
return param;
}
/// <summary>
/// 事件处理多条Sql语句
/// </summary>
/// <param name="strs"></param>
public static int ExecTrans(string[] strs)
{
Open();
int OK = -1;
OleDbCommand cmd = CreateCommand();
OleDbTransaction tran=con.BeginTransaction();
cmd.Transaction = tran;
try {
foreach(string sql in strs)
{
OK ;
cmd.CommandText=sql;
cmd.ExecuteNonQuery();
}
tran.Commit();
}catch(Exception e){ //执行失败返回有问题的sql索引
tran.Rollback();
return OK;
}finally{
con.Close();
}
if (OK == strs.Length - 1) //执行成功的话返回-1;
{
OK = -1;
}
return OK;
}
}
}
标签: 数据访问层封装
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论