c#OleDbHelper类的实现方法

c vs winform access 数据库

一直以来用的是SqlDbhelper,这几天刚好要用到访问Access数据库.OleDbHelper就在原有的SqlDbhelper的基础上进行了改进了一下.当然大家可以去把功能实现更强大一点.

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Configuration;

namespace OleDbHelper
{
    public static class OleDbHelper
    {
        private static OleDbConnection connection;
        /// <summary>
        /// 获得一个唯一的CONNECTION 实例
        /// </summary>
        public static OleDbConnection Connection
        {

            get
            {
                string connectionstring = @"Provider=Microsoft.Jet.OLEDB.4.0;Data source=db.mdb;";
               
                if (connection == null)
                {
                    connection = new OleDbConnection(connectionstring);
                    connection.Open();
                }
                else if (connection.State == System.Data.ConnectionState.Closed)
                {

                    connection.Open();


                }
                else if (connection.State == System.Data.ConnectionState.Broken)
                {
                    connection.Close();
                    connection.Open();
                }
                return connection;
            }

        }
        /// <summary>
        /// 返回执行SQL 语句所影响数据的行数
        /// </summary>
        /// <param name="sql">sql 语句</param>
        /// <returns>影响行数</returns>
        public static int ExecuteCommand(string sql)
        {
            OleDbCommand com = new OleDbCommand(sql, Connection);
            int result = com.ExecuteNonQuery();
            return result;
        }
        /// <summary>
        /// 获取结果集的第一行第一列
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static int GetScalar(string sql)
        {
            OleDbCommand com = new OleDbCommand(sql, Connection);
            int result = int.Parse(com.ExecuteScalar().ToString());
            return result;

        }
        /// <summary>
        ///  执行Sql语句,获取DataTable结果集
        /// </summary>
        /// <param name="sql">SQL语句</param>
        /// <returns>DataTable</returns>
        public static DataTable GetDataTable(string sql)
        {
            DataSet dataset = new DataSet();
            OleDbCommand com = new OleDbCommand(sql, Connection);
            OleDbDataAdapter da = new OleDbDataAdapter(com);
            da.Fill(dataset);
            return dataset.Tables[0];
        }
        /// <summary>
        /// 执行Sql语句,获取DataSet结果集
        /// </summary>
        /// <param name="sql">SQL语句</param>
        /// <returns>DataSet</returns>
        public static DataSet GetDataSet(string sql)
        {
            DataSet dataset = new DataSet();
            OleDbCommand com = new OleDbCommand(sql, Connection);
            OleDbDataAdapter da = new OleDbDataAdapter(com);
            da.Fill(dataset);
            return dataset;
        }
        /// <summary>
        /// 获取OleDbDataReader结果集
        /// </summary>
        /// <param name="sql">SQL语句</param>
        /// <returns>OleDbDataReader</returns>
        public static OleDbDataReader GetReader(string sql)
        {
            OleDbCommand com = new OleDbCommand(sql, Connection);
            OleDbDataReader reader = com.ExecuteReader();
            return reader;
        }
        /// <summary>
        /// 执行SQL语句
        /// </summary>
        /// <param name="SQLString">SQL语句</param>
        /// <param name="cmdParms">参数</param>
        /// <returns>影响行数</returns>
        public static int ExecuteSql(string SQLString, params OleDbParameter[] cmdParms)
        {
            OleDbCommand com = new OleDbCommand(SQLString, Connection);
            PrepareCommand(com, Connection, null, SQLString, cmdParms);
            int rows = com.ExecuteNonQuery();
            com.Parameters.Clear();
            return rows;
        }
        /// <summary>
        /// 获取DataSet结果集
        /// </summary>
        /// <param name="SQLString">SQL语句</param>
        /// <param name="cmdParms">参数</param>
        /// <returns>DataSet</returns>
        public static DataSet GetDataSet(string SQLString, params OleDbParameter[] cmdParms)
        {
            OleDbCommand cmd = new OleDbCommand(SQLString, Connection);
            PrepareCommand(cmd, Connection, null, SQLString, cmdParms);
            OleDbDataAdapter da = new OleDbDataAdapter(cmd);

            DataSet ds = new DataSet();
            try
            {
                if (connection.State == ConnectionState.Closed)
                    connection.Open();
                da.Fill(ds, "ds");
                cmd.Parameters.Clear();
            }
            catch
            {
              
            }
            finally
            {
             
            }
            return ds;
        }
        private static void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, OleDbTransaction trans, string cmdText, OleDbParameter[] cmdParms)
        {
            cmd.CommandText = cmdText;
            cmd.Connection = conn;
            if (trans != null)
                cmd.Transaction = trans;
            cmd.CommandType = CommandType.Text;//cmdType;
            if (cmdParms != null)
            {
                foreach (OleDbParameter parm in cmdParms)
                    cmd.Parameters.Add(parm);
            }
        }
    }
}


相关推荐

  • 用iframe的方法实现跨域调用方法 不跨域的情况下:使用iframe框,子页面调用父页面方法,或者传递对象,可以用如下方式parent.window.function(param)(子传父函数对象即可实现,对象param可以在子页面赋值)跨域的情况下:必须使用第三者为第一个域
  • 多种方法实现虚拟主机301重定向 下文中中国信息港总结了多种方法实现虚拟主机301重定向,希望有一个可以适合你的主机。【问题如下】1、301重定向的作用?2、URL转发的原理?3、windows和linux主机如何实现301重定向?4、asp、php和net主机如何实现30
  • [原]iOS自定义多参数类型方法[UIAlertView 方法实现] [原]iOS自定义多参数类型方法2015-4-1阅读135评论0前几天做自定义UIAlertView的时候,想仿造系统自带的初始化方法做一个AlertView,里面涉及到不确定多参数的设置和使用问题。这里做一下记录。我自定义了一个方法:-(
  • 四种方法实现文档双面打印   在日常办公中要求对文档进行双面打印是很常见的,在打印机没有自带双面打印功能的情况下,如何既节约人力成本,又能快速实现双面打印呢?具体情况具体分析,一起看看在下面四种情况下的双面打印法。  一、在Word2007中快速实现双面打印  Wo
  • jQuery load() 方法实现加载远程数据 JQueryload()方法是简单但强大的AJAX方法。load()方法从服务器加载数据,并把返回的数据放入被选元素中。语法:$(selector).load(URL,data,callback);必需的URL参数规定您希望加载的URL。可
  • C语言递归方法实现斐波那契数列 本文介绍面试题经典试题之一:C语言用递归方法实现斐波那契数列(从第三个数起,后一个数等于前面两个数之和):1、1、2、3、5、8、13、21、34.........#includelongintfun(intn){if(n==1||n==2
  • 总结ps彩色变黑白的多种方法实现把彩色变黑白图像 黑白照片有它独特的魅力,黑白照片所带来的影调、层次以及让人玩味的情趣是彩色相片无法取代的,黑白照片更能带来震撼和深层次的东西。  ps彩色变黑白图像的方法,在以前的文章曾经介绍过四种方法,通过执行“图像——调整——去色、黑白、色相/饱和度”
  • java编程:三种方法实现斐波那契数列 题目要求:编写程序在控制台输出斐波那契数列前20项,每输出5个数换行方法一:publicclassFibonacci1{//定义三个变量方法publicstaticvoidmain(String[]args){inta=1,b=1,c=0;
  • Delphi与FORTRAN语言混合编程,不同方法实现混合编程  Delphi与FORTRAN语言的混合编程:    众所周知,FORTRAN强于数值计算,尤其是如果计算主要针对复数进行,则FORTRAN更有无可比拟的优势。FORTRAN是所有语言中唯一将复数定义为一种标准数据类型的语言。      但
  • android中SQLite的使用总结,用excSQL和rawQuery方法实现一般得增删改查 1:androidmanifest.xml的内容<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/
  • 安卓代码混淆方法实现 注:Android反编译文件proguard.cfg,是第一代的混淆文件,在project.properties文件中把这#proguard.config=${sdk.dir}/tools/proguard/proguard-android
  • C# MDI编程中父窗体获取子窗体的值的一个实现方法 在C#MDI编程中,父窗体如何获取子窗体的值?这里有一个实现方法。在父窗体定义可外部访问的静态就是值,用循环的方法去读取已定义的静态就是值,当子窗体更新这些已定义的静态变量值,父窗体就能立即获取更新值。下面以示例来说明具体的实现过程。有两个

你的评论

就没有什么想说的吗?

最新博客

关于我们 免责声明 移动版

©2017传客网    琼ICP备15003173号-2    

本站部分文章来源于互联网,版权归属于原作者。
本站所有转载文章言论不代表本站观点,如是侵犯了原作者的权利请发邮件联系站长(weishubao@126.com),我们收到后立即删除。
站内所有资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!

X