惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

W
WeLiveSecurity
T
Tenable Blog
Project Zero
Project Zero
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
S
Schneier on Security
Scott Helme
Scott Helme
S
Securelist
Know Your Adversary
Know Your Adversary
Vercel News
Vercel News
IT之家
IT之家
V
V2EX
F
Fortinet All Blogs
Simon Willison's Weblog
Simon Willison's Weblog
K
Kaspersky official blog
博客园_首页
T
Tailwind CSS Blog
The GitHub Blog
The GitHub Blog
Spread Privacy
Spread Privacy
Microsoft Security Blog
Microsoft Security Blog
Cisco Talos Blog
Cisco Talos Blog
The Register - Security
The Register - Security
有赞技术团队
有赞技术团队
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Cyberwarzone
Cyberwarzone
Google DeepMind News
Google DeepMind News
The Hacker News
The Hacker News
L
LINUX DO - 热门话题
Hugging Face - Blog
Hugging Face - Blog
博客园 - 三生石上(FineUI控件)
A
Arctic Wolf
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
C
CXSECURITY Database RSS Feed - CXSecurity.com
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Privacy & Cybersecurity Law Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CERT Recently Published Vulnerability Notes
S
SegmentFault 最新的问题
AWS News Blog
AWS News Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
Apple Machine Learning Research
Apple Machine Learning Research
P
Proofpoint News Feed
The Cloudflare Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Vulnerabilities – Threatpost

博客园 - 小猫路人

[导入]搜狗2.5版发布 20亿容量将成最大中文引擎数据库 [导入]干掉Google Base? 微软欲推Fremont服务 [导入]联通微软携手 联通用户12月起可手机上MSN [导入]Google股价周二暴跌 创全年单日最大跌幅纪录 关于Rudy,其实这样的语言有很多,只不过大家没有关注,没有机会接触 什么质量阿 学院要搬到上海安亭了,现在研一正在实习,我是继续实习呢?还是研二回学校好好闭关补补基础?期待大家的意见 Indigo 好久不写了,太忙 辛辛苦苦跑回来,老师居然说不上课,气愤! 计划 本来是累得不行想关机了,这么累的一天还是记下来吧 ClearCase汇编 越发觉得健康的重要性了,所以打算开始注意饮食 这几天开心过度,疲惫睡眠,结果…… 今天接到一个0755的电话,一开始稀里糊涂的,没想到…… 第六个周末(时间过得好快啊) 还是这张最好看 http://www.cnblogs.com/neediss/articles/124486.html
最近做复旦国际交流学院的一个项目时,使用到了Access,自己写了一个AccessHelper
小猫路人 · 2005-07-13 · via 博客园 - 小猫路人

网上估计有很多版本了,自己仿照SqlHelper实现了这个,用了感觉不错,欢迎提意见,欢迎介绍项目。谢谢大家了

using System;
using System.Data;
using System.Data.OleDb;

namespace DAL
{
    
/// <summary>
    
/// AccessHelper 的摘要说明。
    
/// </summary>

    public class AccessHelper
    
{
        
private AccessHelper()
        
{
            
//静态构造函数,表示该类不可以被实例化
            
//所以的成员都是static类型的
        }


        
private static string m_connection = "";
        
        
/// <summary>
        
/// ConnectionString的属性
        
/// </summary>

        public static string ConnectionString
        
{
            
set
            
{
                m_connection 
= value;
            }

            
get
            
{
                
return m_connection;
            }

        }


        
/// <summary>
        
/// 判断OleDbConnection是否已经连接
        
/// </summary>
        
/// <returns>true 表示OleDbConnection已经连接,或者设置连接成功; 
        
/// false 表示OleDbConnection尝试连接失败</returns>

        public static bool IsConnected()
        
{
            OleDbConnection conn 
= new OleDbConnection(m_connection);
            
            
try
            
{
                conn.Open();
                
return true;
            }

            
catch
            
{
                
return false;
            }

        }

    

        
/// <summary>
        
/// 执行一条Sql命令
        
/// </summary>
        
/// <param name="cmdText">Sql语句</param>
        
/// <returns>表示影响的行数</returns>

        public static int ExecuteText(string cmdText)
        
{
            OleDbCommand cmd 
= new OleDbCommand();
            
try
            
{
                PrepareCommand(cmd,CommandType.Text,cmdText);
                
try
                
{
                    
return cmd.ExecuteNonQuery();
                }


                
catch (OleDbException e)
                
{
                    
throw (new Exception(e.Message));;
                }

            }

            
catch (Exception ex)
            
{
                
throw ex;
            }

            
finally
            
{
                DisposeCmd(cmd);
            }

        }


        
/// <summary>
        
/// 执行一条Sql命令(ExecuteScalar),返回一个结果值(int, string, float等类型)。如果不存在记录,返回为null。
        
/// </summary>
        
/// <param name="cmdText">Sql语句</param>
        
/// <returns>返回值(int, string, float等类型)。如果不存在记录,返回为null。</returns>

        public static object ExecuteTextRet(string cmdText)
        
{
            OleDbCommand cmd 
= new OleDbCommand();
            
try
            
{
                PrepareCommand(cmd, CommandType.Text, cmdText);
                
try
                
{
                    
return cmd.ExecuteScalar();
                }

                
catch (OleDbException e)
                
{
                    
throw (new Exception(e.Message));
                }

            }
            
            
catch (Exception ex)
            
{
                
throw ex;
            }

            
finally
            
{
                DisposeCmd(cmd);
            }

        }


        
/// <summary>
        
/// 执行一个Sql命令,返回一个DataSet结果集。
        
/// </summary>
        
/// <param name="cmdText">Sql语句</param>
        
/// <param name="TableName">Fill入DataSet中的表名</param>
        
/// <returns>DataSet结果集</returns>

        public static DataSet ExecuteTextRet(string cmdText, string TableName)
        
{
            DataSet ds 
= new DataSet();
            OleDbDataAdapter adp 
= new OleDbDataAdapter();
            OleDbCommand cmd 
= new OleDbCommand();
            
try
            
{
                PrepareCommand(cmd, CommandType.Text, cmdText);
                
try
                
{
                    adp.SelectCommand 
= cmd;
                    adp.Fill(ds,TableName);
                    
return ds;
                }

                
catch (OleDbException e)
                
{
                    
throw (new Exception(e.Message));
                }

            }

            
catch (Exception ex)
            
{
                
throw ex;
            }

            
finally
            
{
                DisposeCmd(cmd);
            }


        }
    

        
/// <summary>
        
/// 把一个DataSet更新入数据库(可以修改,添加,删除)
        
/// 但是,这个表的设计中必须要有主键
        
/// </summary>
        
/// <param name="cmdText">select语句,和要更新的表对应</param>
        
/// <param name="ds">要更新入数据库的DataSet</param>
        
/// <param name="TableName">DataSet中的源表名</param>
        
/// <returns>影响的行数</returns>

        public static int ExecuteUpdate(string cmdText,DataSet ds,string TableName)
        
{
            OleDbDataAdapter adp 
= new OleDbDataAdapter();
            OleDbCommand cmd 
= new OleDbCommand();
            
try
            
{
                PrepareCommand(cmd, CommandType.Text, cmdText);
                adp.SelectCommand 
= cmd;
                OleDbCommandBuilder builder 
= new OleDbCommandBuilder(adp);
                
return adp.Update(ds,TableName);
            }

            
catch (Exception ex)
            
{
                
throw ex;
            }

            
finally
            
{
                DisposeCmd(cmd);
                adp.Dispose();
            }

        }


        
/// <summary>
        
/// 设置OleDbCommand的参数
        
/// </summary>
        
/// <param name="cmd">OleDbCommand对象</param>
        
/// <param name="cmdType">类型</param>
        
/// <param name="cmdText">Sql语句</param>        

        private static void PrepareCommand(OleDbCommand cmd, CommandType cmdType, string cmdText)
        
{    
            OleDbConnection    conn 
= new OleDbConnection(m_connection);
            
try
            
{
                conn.Open();
    
                
if (cmd != null)
                
{
                    cmd.Connection 
= conn;
                    cmd.CommandText 
= cmdText;
                    cmd.CommandType 
= cmdType;
                }
                
            }


            
catch (OleDbException e)
            
{
                
throw (new Exception(e.Message));
            }

        }

        

        
/// <summary>
        
/// 处理OleDbCommand,关闭连接,并且释放内存。
        
/// </summary>
        
/// <param name="cmd">要处理的OleDbCommand对象</param>

        private static void DisposeCmd(OleDbCommand cmd)
        
{
            
if (cmd.Connection != null)
            
{
                cmd.Connection.Close();
                cmd.Connection.Dispose();
            }

            cmd.Dispose();
        }


        
#region 填加段
        
/// <summary>
        
/// 根据app.config获取连接字符串
        
/// </summary>
        
/// <returns></returns>

        public static string GetConnectionStringFromConfigFile()
        
{
            DataSet ds 
= new DataSet();
            ds.ReadXml(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);            
            
string result = ds.Tables["appSettings"].Rows[0]["DateSource"].ToString();
            ds.Clear();
            ds.Dispose();

            result 
= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + result;        
            
return result;
        }


        
/// <summary>
        
/// 根据app.config获取数据源的信息
        
/// </summary>
        
/// <returns></returns>

        public static string GetDataSourceFromConfigFile()
        
{
            DataSet ds 
= new DataSet();
            ds.ReadXml(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);            
            
string result = ds.Tables["appSettings"].Rows[0]["DateSource"].ToString();
            ds.Clear();
            ds.Dispose();
            
            
return result;

        }


        
/// <summary>
        
/// 设置app.config的数据源信息
        
/// </summary>
        
/// <param name="dataSource"></param>

        public static void SetDataSourceToConfigFile(string dataSource)
        
{
            DataSet ds 
= new DataSet();
            ds.ReadXml(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);            
            ds.Tables[
"appSettings"].Rows[0]["DateSource"]=dataSource;
            ds.AcceptChanges();
            ds.WriteXml(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
            ds.Clear();
            ds.Dispose();
        }


        
/// <summary>
        
/// 测试能否连接(打开并关闭)
        
/// </summary>
        
/// <returns></returns>

        public static bool IsCanConnected()
        
{
            OleDbConnection conn 
= new OleDbConnection(m_connection);
            
bool result = false;
            
try
            
{
                conn.Open();
                result 
= true;
            }

            
catch
            
{
                result 
= false;
            }

            
finally
            
{
                conn.Close();
            }

            
return result;
        }

        
#endregion

    }

}